本节将介绍Linux下使用Shell处理文本时最常用的工具: find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk; 提供的例子和参数都是常用的; 我对shell脚本使用的原则是命令单行书写,尽量不要超过2行; 如果有更为复杂的任务需求,还是考虑python吧;
1.find 文件查找
查找txt和pdf文件:
find . \( -name "*.txt" -o -name "*.pdf" \) -print
查找结尾是: llo.cpp 的文件
find . \( -name "*llo.cpp" \) -print
注意 括号左边需要加 \ 中间还有一些空格
正则方式查找.txt和pdf:
find . -regex ".*\(\.txt|\.pdf\)$"
-iregex: 忽略大小写的正则
否定参数 ,查找所有非txt文本:
find . ! -name "*.txt" -print
指定搜索深度,打印出当前目录的文件(深度为1):
find . -maxdepth 1 -type f
2. grep 文本搜索
grep match_patten file
常用参数
-o 只输出匹配的文本行 VS -v 只输出没有匹配的文本行
-c 统计文件中包含文本的次数
grep -c “text” filename
-n 打印匹配的行号
-i 搜索时忽略大小写
-l 只打印文件名
在多级目录中对文本递归搜索(程序员搜代码的最爱):
grep "class" . -R -n
匹配多个模式:
grep -e "class" -e "vitural" file
grep -e "class" -e "main" *
3 xargs 命令行参数转换
xargs 能够将输入数据转化为特定命令的命令行参数;这样,可以配合很多命令来组合使用。比如grep,比如find; - 将多行输出转化为单行输出
参考
https://linuxtools-rst.readthedocs.io/zh_CN/latest/base/03_text_processing.html#grep
网友评论