Linux 命令行操作入门(三)

Linux 命令行操作入门(三)

sed和awk的最基础命令操作

sed
命令格式:
sed option ‘script’ file1 file2 …

option:(可以为-n或者-i)
-n静默输出,sed程序在所有的脚本指令执行完毕后,这些选项可以屏蔽自动打印。
-i直接修改源文件,经脚本指令处理后的内容将本输出至源文件。

'script’脚本的格式:
/pattern/command
pattern指定符合某些条件的行
command指指令,常用的指令:
a , append 追加
i , insert 插入
d , delete 删除
s , substitution 替换
p, print 打印

例子:(在Linux上操作一下就知道)
sed ‘2a nihao’ test.txt
注:2表示test.txt文件中的第二行,a表示追加,nihao为追加的内容,test.txt为自己的文件。
显示在第二行追加上’nihao’的test.txt内容,但是使用cat test.txt产看文件内容时,并没有追加’nihao’,即没改变源文件,单纯只是打印出来。

sed -i ‘2a nihao’ test.txt
可以改变源文件,-i表示直接修改源文件

sed -i ‘1,4a nihao’ test.txt
在第一行和第四行追加内容’nihao’

sed ‘2d’ test.txt
删除test.txt的第二行内容(如下图)
在这里插入图片描述
sed ‘/4444/a 5555’ test.txt
在test.txt文件中所有的4444所在的行后面追加55556(如果更改源文件,加-i)

sed -n ‘/4444/p’ test.txt
把test.txt中包含4444的行内容打印出来

sed ‘/4444/s/5/Five/g’ test.txt
把4444所在的行中的5,全部替换为Five,如果去掉g,就是只替换4444所在行的第一个5,其中g表示全局。

sed ‘s/5/Five/g’ test.txt
把test.txt中的所有5替换为Five

sed ‘s/5/-----&-----/’ test.txt
把test.txt中的每行第一个5替换为-----5-----(如下图:)
在这里插入图片描述

awk(如果说sed是对行进行操作,那么awk是对列进行操作)

命令格式
awk option ‘script’ file1 file2
脚本格式:
/pattern/{actions}
pattern指符合某条件的行

例子:
awk ‘{print $2}’ test1.txt
$表示列的意思,$2表示test1.txt文件的第二列,默认空格作为列的分隔符(如下图所示)
在这里插入图片描述
awk ‘$2>60{print $2}’ test1.txt
对test1.txt第二列大于60的行,执行输出第二列的命令
在这里插入图片描述
awk ‘$2>60{print $1 " " $2}’ test1.txt
在这里插入图片描述
awk ‘$2>60{print $0 " GOOD"}’ test1.txt
$0表示一整行;
找到第二列大于60的行,并在行后添加GOOD
在这里插入图片描述

awk ‘$2>=60{print $0 " GOOD"} $2<60{print $0 " BAD"}’ test1.txt
在这里插入图片描述
awk -F ‘:’ ‘{print $1}’ test1.txt
-F ':'表示使用 ‘:‘作为列的分隔符
由于test1.txt文件中没有’:’,所以一整行作为一列。
在这里插入图片描述
awk -F ’ ’ ‘{print $1"\t"$2}’ test1.txt
在这里插入图片描述
awk 'BEGIN{statements1} statements2 END{statements3}'
在执行statements2之前执行BEGIN,执行statements之后执行END
例如:awk ‘BEGIN{print “start”}{print $1} END{print “End”}’ test1.txt
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章