Linux系统中处理分析文件内容(sed&awk)的用法

1.awk(强大的文本分析工具)

 1 awk [-F filed-separator] 'command' file_path
 2 #默认域分隔符为空格(被分隔开的单个内容称为域)
 3 
 4 #
 5 tail /etc/passwd | awk -F":" '{print $0}'    #输出文件前10行内容
 6 tail /etc/passwd | awk -F":" '{print $1}'    #输出文件前10行第一列内容
 7 tail /etc/passwd | awk -F":" '{print $1"-"$2}'    #输出文件前10行第一列和第二列内容,以"-"分隔
 8 
 9 常用内置变量
10 FNR    #浏览文件的记录数,但区分文件
11 NR    #浏览文件的记录数,不区分文件
12 NF    #文件每行的域数
13 OFS    #指定输出域的分隔符
14 
15 #
16 awk '{OFS="-";print $1,$2}'

 

2.sed(流编辑器,一次处理一行内容)

 1 sed [nefr] [action] [file]
 2 
 3 #nefr
 4 sed -n    #使用安静模式,不打印所有内容,只打印结果
 5 sed -i    #直接修改文件内容,而不输出到终端
 6 
 7 #action
 8 a    #新增
 9 c    #取代
10 i    #插入
11 s    #替换
12 
13 d    #删除
14 #例如
15 sed "3d" file_path           #删除第三行
16 sed "1,3d" file_path         #删除前三行第一行和第三行
17 sed "1;3d" file_path        #删除第一行和第三行
18 sed "/^$/d" file_path        #删除空行
19 sed "/abc/d" file_path       #删除含abc的行
20 sed "/abc/,+3d" file_path    #删除含abc的行及后面三行
21 sed "/abc/,~3d" file_path    #删除含abc的行及后面两行
22 sed "1~2d" file_path         #从第一行开始,每两行删一行
23 sed "\$d" file_path          #删除最后一行
24 sed "/dd\|cc/d" file_path    #删除含有dd或cc的行
25 
26 s    #替换
27 #例如
28 sed "s/old/new/g" file_path          #g表示对所在行,进行全部替换
29 sed "s/\(old\)/new/" file_path       #忽略小括号,替换小括号中的内容
30 sed -r "s/(old)/new/" file_path      #忽略小括号,替换小括号中的内容
31 sed -r "s/(old)/new\1/" file_path    #引用第一个括号中的内容
32 sed -r "s/(piece1_old)(piece2_old)/\2new\1/" file_path    #被替换对象为piece1+piece2
posted @ 2021-02-03 22:51  notesForKai  阅读(183)  评论(0)    收藏  举报