Linux三剑客之sed、awk

- h 显示帮助
- n 仅显示script处理后的结果
- e<script> 以选项中指定的script来处理输入的文本文件
- f<script FILE>以选项中指定的script文件来处理输入的文本文件
常用动作
a:新增 sed - e '2 a newline' 在第2行后面新增一行
c:取代 sed -e '3,5 c newline' test.txt 取代第3行至第5行的内容
d:删除 sed -e '2,3 d' test.txt 删除第2至第3行的内容
i:插入 sed -e '2,3 i newline' test.txt 在第2至第5行前面插入一行内容
p:打印 sed -n '/root/p' test.txt 将test.txt文件中所有的root打印出来
s:取代 sed -e 's/root/writer/g' test.txt 将所有的root取代为writer/全局替换
使用cat命令查找 test.txt文件中数据并没有改变,是因为 sed有一个模式空间的概念,因此加参数-i可以修改成功!但是不要和上面的sed -e '2 i newline'中的i混了!
查看帮助:
man sed
sed -h
sed与grep的区别:
awk
把文件逐行读入,以空格为默认分隔符将每行切片,切开的部分再进行后续处理

FILENAME:awk浏览的文件名
BEGIN :处理文本之前要执行的操作
END :处理文本之后要执行的操作
FS :设置输入域分隔符,等价于命令行 -F选项
NF:浏览记录的域的个数(列数)
NR:已读的记录数(行数)
OFS:输出域分隔符
ORS:输出记录分隔符
RS:控制记录分隔符
$0:整条记录
$1:表示当前的第一个域.....依次类推
awk -F : '/home/{print $3}' /etc/passwd 这里要注意空格
awk -F : 'NR==2{print $0}' /etc/passwd