Linux命令三剑客sed、grep、awk

620 阅读2分钟

在linux定位问题经常会使用一些常用的命令来提高效率。接下来会介绍3个常用命令

1、sed

sed主要是用来将数据进行选取、替换、删除、新增的命令

sed命令格式:sed [选项] '[动作]' 文件名

选项意义例子
-n经过sed处理的那一行会显示sed -n '5p' main.go #查看main.go的第5行
-i直接编辑文件sed -i 's/2010/2021/g' ./main.go #将main.go的2010替换为2021
动作意义例子
a(append)新增,新增之后在新的一行出现sed '3a wuwu' test1 # 在test1的第三行之后,写入wuwu
d删除sed ‘2,3d’ main.go #删除2行,3行
i(insert)插入,新增之后在新的一行出现sed '3a wuwu' test1 # 在test1的第三行,插入wuwu
s取代sed -i 's/2010/2021/g' ./main.go > test.go # 将main.go的2010替换为2021并输出为test.go
p通常与-n一起执行,打印对应的列sed -n '/h/p' test1 #查看test1包含h的字符串,并打印
sed -n '/^w/p' test1 #查看以w开头的字符串,并打印对应行
g行内全局替换sed -i 's/2010/2021/g' ./main.go #将main.go的2010替换为2021
2、awk

awk主要是用来取列

awk命令格式:awk ‘{动作}‘ file

动作:格式化输出,流程控制语句。举几个例子:

1)删除当前目录下文件大小大于1024的文件

ls -l |awk '{if($5>1024){print $5}}'

2)计算当前文件所有文件的大小

BEGIN 初始化代码;END所有执行完之后执行,经常使用打印语句

ll |awk 'BEGIN{size=0;}{size=size+$5;} END {print "the size is ",size}'
3、grep

grep主要用来搜索

grep命令格式:grep [option]

option意义例子
-v不包含grep -v wu test1 # 显示不包含wu的所有行
-i忽略大小写grep -i wu test1 # 显示包含wu且不区分大小写
-n显示匹配的行号grep -n wu test1 # 显示wu所在的行数
-c统计匹配的行数grep -ic wu test1 # 显示包含wu的总个数
-r递归grep -ic wu # 显示当前目录下包含wu的总个数