搞定 Linux Shell 文本处理工具,看完这篇集锦就够了
Linux Shell是一种基本功,由于怪异的语法加之较差的可读性,通常被Python等脚本代替。既然是基本功,那就需要掌握,毕竟学习Shell脚本的过程中,还是能了解到很多Linux系统的内容。 Linux脚本大师不是人人都可以达到的,但是用一些简单的Shell实现一些常见的基本功能还是很有必要的。 下面我介绍Linux下使用Shell处理文本时最常用的工具: find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk; 提供的例子和参数都是最常用和最为实用的; 我对shell脚本使用的原则是命令单行书写,尽量不要超过2行; 如果有更为复杂的任务需求,还是考虑python吧; 1、find 文件查找 查找txt和pdf文件
正则方式查找.txt和pdf
-iregex:忽略大小写的正则 否定参数 查找所有非txt文本
指定搜索深度 打印出当前目录的文件(深度为1)
定制搜索 按类型搜索:
-type f 文件 / l 符号链接 按时间搜索: -atime 访问时间 (单位是天,分钟单位则是-amin,以下类似) -mtime 修改时间 (内容被修改) -ctime 变化时间 (元数据或权限变化) 最近7天被访问过的所有文件:
按大小搜索: w字 k M G 寻找大于2k的文件
按权限查找:
按用户查找:
找到后的后续动作 删除: 删除当前目录下所有的swp文件:
执行动作(强大的exec)
注:{}是一个特殊的字符串,对于每一个匹配的文件,{}会被替换成相应的文件名; eg:将找到的文件全都copy到另一个目录:
结合多个命令 tips: 如果需要后续执行多个命令,可以将多个命令写成一个脚本。然后 -exec 调用时执行脚本即可;
-print的定界符 默认使用' '作为文件的定界符; -print0 使用''作为文件的定界符,这样就可以搜索包含空格的文件; 2、grep 文本搜索
常用参数 -o 只输出匹配的文本行 VS -v 只输出没有匹配的文本行 -c 统计文件中包含文本的次数
-n 打印匹配的行号 -i 搜索时忽略大小写 -l 只打印文件名 在多级目录中对文本递归搜索(程序员搜代码的最爱):
匹配多个模式
grep输出以作为结尾符的文件名:(-z)
3、xargs 命令行参数转换 xargs 能够将输入数据转化为特定命令的命令行参数;这样,可以配合很多命令来组合使用。比如grep,比如find; 将多行输出转化为单行输出
是多行文本间的定界符 将单行转化为多行输出
-n:指定每行显示的字段数 xargs参数说明 -d 定义定界符 (默认为空格 多行的定界符为 ) -n 指定输出为多行 -I {} 指定替换字符串,这个字符串在xargs扩展时会被替换掉,用于待执行的命令需要多个参数时 eg:
-0:指定为输入定界符 (编辑:ASP站长网) |