Linux下使用Shell文本处理工具集锦:
find:文件查找工具
查找txt和pdf文件:find . print正则方式查找:find . regex ".*/"忽略大小写正则查找:使用iregex指定搜索深度:如打印当前目录文件:find . maxdepth 1 type f按类型、时间、大小、权限、用户搜索文件找到文件后的后续动作:删除、执行动作、结合多个命令
grep:文本搜索工具
基本用法:grep match_pattern file常用参数:o、v、c、n、i、l递归搜索:grep "class" . R n匹配多个模式:grep e "class" e "virtual" file
xargs:命令行参数转换工具
将多行输出转化为单行输出:cat file.txt | xargs将单行转化为多行输出:cat single.txt | xargs n 3常用参数:d、n、I {}、0
sort:排序工具
按数字、字典序、逆序排序:n、d、r指定按第N列排序:k N
uniq:消除重复行工具
消除重复行:sort unsort.txt | uniq统计各行出现次数:sort unsort.txt | uniq c找出重复行:sort unsort.txt | uniq d
tr:转换工具
字符替换:echo 12345 | tr '09' '9876543210'删除字符:cat file | tr d '09'压缩字符:cat file | tr s ' '字符类转换:如tr '[:lower:]' '[:upper:]'
cut:按列切分文本工具
截取指定列:cut f2,4 filename去除指定列外的所有列:cut f3 complement filename指定定界符:d
paste:按列拼接文本工具
基本用法:paste file1 file2指定定界符:paste file1 file2 d ","
wc:统计行和字符的工具
统计行数:wc l file统计单词数:wc w file统计字符数:wc c file
sed:文本替换工具
首处替换:sed 's/text/replace_text/' file全局替换:sed 's/text/replace_text/g' file直接替换原文件:sed i 's/text/replace_text/g' file移除空白行:sed '/^$/d' file
awk:数据流处理工具
基本结构:awk ' BEGIN{ statements } statements2 END{ statements } '打印当前行:print特殊变量:NR、NF、$0、$1、$2传递外部变量:var=1000; echo | awk '{print vara}' vara=$var设置定界符:awk F: '{print $NF}' /etc/passwd使用循环:for{print $i;}常用内建函数:index、sub、match、length、printf
这些工具在Linux下的Shell脚本编写中非常常用,熟练掌握它们可以大大提高文本处理的效率。