sed偏向于编译文档,awk偏向与分析文本
sed使用方式
增加
sed -i "2a line 3 " test.txt
解释说明
(1)-i 对文件内容做变更
(2)双引号中的2a解释成在第二行下附加内容,a可以理解成append。
执行结果
[root@localhost wcf]# cat test.txt
wcf test file line 1
line 2
[root@localhost wcf]# sed -i "2a line 3 " test.txt
[root@localhost wcf]# cat test.txt
wcf test file line 1
line 2
line 3
删除
sed -i "3,4d" test.txt
解释说明
(1)-i 对文件内容做变更
(2)双引号中的内容表示删除3-4行的内容,d可以理解成delete。
执行结果
[root@localhost wcf]# cat test.txt
wcf test file line 1
line 2
line 3
[root@localhost wcf]# sed -i "3,4d" test.txt
[root@localhost wcf]# cat test.txt
wcf test file line 1
line 2
修改
sed -i "s/line/world/g" test.txt
解释说明
(1)-i 对文件内容做变更
(2)双引号中的内容表示将文档中的line替换成world。
执行结果
[root@localhost wcf]# cat test.txt
wcf test file line 1
wct test file line 2
line 3
line 4
[root@localhost wcf]# sed -i 's/line/world/g' test.txt
[root@localhost wcf]# cat test.txt
wcf test file world 1
wct test file world 2
world 3
world 4
查询
sed -n "1,2p" test.txt
sed -n "/wcf/p" test.txt
解释说明
(1)"1,2p"表示展示第一行和第二行的数据
(2)"/wcf/p" 表示查找行中有wcf内容的行。
执行结果
[root@localhost wcf]# cat test.txt
wcf test file line 1
line 2
[root@localhost wcf]# sed -n "1,2p" test.txt
wcf test file line 1
line 2
[root@localhost wcf]# sed -n "/wcf/p" test.txt
wcf test file line 1
awk使用方式
示例1
awk -F " " '{if(NR<5 && NR >1) print $1}' test.txt
解释说明
(1)-F用于指定分隔符,我这里将空格设置成分隔符
(2)NR<5 && NR >1表示大于第一行,小于第五行
(3)$1表示只展示根据分隔符分割后的每行的第一列
执行结果
[root@localhost wcf]# cat test.txt
wcf test file line 1
wct test file line 2
line 3
line 4
[root@localhost wcf]# awk -F " " '{if(NR<5 && NR >1) print $1}' test.txt
wct
line
line
示例2
awk -F ' ' '/wct/{print "filename:" FILENAME ",linenumber:" NR ",columns:" NF ",linecontent:"$0}' test.txt
解释说明
(1)根据空格将每一行进行分割成各个列,每一行就相当于数据库表的一条记录,每一列就相当于数据库的一个字段列
(2)/wct/用于过滤行记录中是否包含wct
(3)大括号中的语句表示,输出文件名,行号,该行对应的列数,$0表示输出整行的所有列
执行结果
[root@localhost wcf]# cat test.txt
wcf test file line 1
wct test file line 2
line 3
line 4
[root@localhost wcf]# awk -F ' ' '/wct/{print "filename:" FILENAME ",linenumber:" NR ",columns:" NF ",linecontent:"$0}' test.txt
filename:test.txt,linenumber:2,columns:5,linecontent:wct test file line 2