awk和sed指令入门

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

你可能感兴趣的:(awk和sed指令入门)