Linux Shell 文本处理工具集锦-Grep+xargs

2022-09-26 15:14:41 浏览数 (1)

1 grep 文本搜索

代码语言:javascript复制
grep match_patten file # 默认访问匹配行

常用参数:

  • -o 只输出匹配的文本行 VS -v 只输出没有匹配的文本行
  • -c 统计文件中包含文本的次数
代码语言:javascript复制
grep -c "text" filename
  • -n 打印匹配的行号
  • -i 搜索时忽略大小写
  • -l 只打印文件名

1 在多级目录中对文本递归搜索

代码语言:javascript复制
grep "class". -R -n

2 匹配多个模式

代码语言:javascript复制
grep -e "class"-e "vitural" file

3 grep输出以作为结尾符的文件名:(-z)

代码语言:javascript复制
grep "test" file* -lZ| xargs -0 rm

2 xargs 命令行参数转换

xargs 能够将输入数据转化为特定命令的命令行参数;这样,可以配合很多命令来组合使用。比如grep,比如find;

将多行输出转化为单行输出

代码语言:javascript复制
cat file.txt| xargs

是多行文本间的定界符

将单行转化为多行输出

代码语言:javascript复制
cat single.txt | xargs -n 3

-n:指定每行显示的字段数

xargs参数说明

  • -d 定义定界符 (默认为空格 多行的定界符为 )
  • -n 指定输出为多行
  • -I {} 指定替换字符串,这个字符串在xargs扩展时会被替换掉,用于待执行的命令需要多个参数时

eg:

代码语言:javascript复制
cat file.txt | xargs -I {} ./command.sh -p {} -1

-0:指定为输入定界符

eg:统计程序行数

代码语言:javascript复制
find source_dir/ -type f -name "*.cpp"-print0 |xargs -0 wc -l

0 人点赞