目录
1.简介
2.命令详解
2.1.grep命令
2.1.1.功能
2.1.2.常见的使用场景及命令
2.2.awk命令
2.2.1.功能
2.2.2.常见的使用场景及命令
2.3.sed命令
2.3.1.功能
2.3.2.常见的使用场景及命令
3.总结
1.简介
在Linux中,grep、awk、sed 命令常被称为“三剑客”。这三种命令是文本处理和数据操作的强大工具,可以非常高效地在终端中对数据进行处理。掌握这三个命令对于文本处理、搜索显得尤为重要。
2.命令详解
2.1.grep命令
2.1.1.功能
grep命令(Global Regular Expression Print)主要用于在文件中搜索匹配的字符串,并将匹配的行输出。
2.1.2.常见的使用场景及命令
a.在当前目录查找匹配中字符串的文件,例如在当前目录且后缀名为 txt 的文件中,查找字符串 hello
命令:grep "hello" ./*.txt
如果想要精确匹配可以加上-w参数,这样hello123将无法匹配中hello,同时如果需要显示行号可以加上-n参数,显示效果如下:
b.在当前目录递归查找所有能匹配中字符串的文件,例如在当前目录递归查询所有文件中包含字符串hello的文件
可以看到,递归查询只需要在示例a中加入 -r 参数即可
命令:grep "hello" ./ -rn
c.忽略大小写匹配,例如在当前目录递归查询所有文件中包含字符串hello的文件,hello不区分大小写
可以看到,只需要加入 -i 参数即可
命令:grep "hello" ./ -rni
d.反转匹配,输出不包含匹配字符串的行,例如在当前目录递归查询所有文件中不包含字符串hello的文件
可以看到,只需要加入 -v 参数即可
命令:grep "hello" ./ -rnv
2.2.awk命令
2.2.1.功能
awk 是一个强大的文本处理工具,通常用于按列处理数据,可以对每一行数据进行操作。
2.2.2.常见的使用场景及命令
例如我现在有一个test.txt文件,文件内容如下:
a.输出当前文件的所有class
命令:sed '1d' test.txt | awk -F ',' '{print $3}'
sed '1d' test.txt用于从第二行开始输出,awk -F ',' '{print $3}' 用于按照","切分每一列,然后输出第三列,即输出class对应的属性列。同理我们可以同时输出name age
命令:sed '1d' test.txt | awk -F ',' '{print $1,$2}'
b.对某一列的值进行累加,例如可以计算age的总和
命令:sed '1d' test.txt | awk -F ',' '{print $2}' | gawk '{ sum += $1 }; END { print sum }'
sed '1d' test.txt | awk -F ',' '{print $2}'用于输出第二列,也就是age,gawk '{ sum += $1 }; END { print sum }' 用于对输出的值做累加并打印结果。
2.3.sed命令
2.3.1.功能
sed(Stream Editor)是一个流编辑器,用于按行处理和编辑文本流。它特别适合对文本进行替换、插入、删除等操作。
2.3.2.常见的使用场景及命令
例如我现在有一个test.txt文件,文件内容如下:
a.输出文件第二行开始的所有行
命令:sed '1d' test.txt
b.输出指定区间的行,例如输出2-3行的所有内容
命令:sed -n '2,3p' test.txt
c.删除指定区间的行,例如删除2-4行的所有内容
命令:sed -i '2,4d' test.txt
d.替换目标字符串为指定字符串,例如将文件中的age替换为width
命令:sed -i 's/age/width/g' test.txt
注:-g参数表示 global(全局)替换,它会替换每行中的所有匹配项。
3.总结
掌握linux命令三剑客功在平时,要经常使用才可以熟练运用其特性,提高办公效率。