awk、xargs、sed、sort、find命令的使用
xargs
xargs可以将输入内容,转成后续命令的参数
- -d 指定参数的分隔符,替换为空格然后给后面的命令执行
# echo '11@22@33' | xargs -d '@' echo 11 22 33
- -p 输出每次要执行的命令并询问是否要执行
# echo '11@22@33' | xargs -p -d '@' echo echo 11 22 33 ?...y 11 22 33
- -n 指定每次最多传递多少个参数给后面的命令执行
# echo '11@22@33@44@55@66@77@88@99@00' | xargs -d '@' -n 3 echo 11 22 33 44 55 66 77 88 99 00
- -E(或-e eof-str) 只传递指定的字符串之前的参数。当存在 -d 时,-E 不起效
# echo '11 22 33' | xargs -E '33' echo 11 22
- -I 使用指定的字符串代替命令行参数
ls *.js | xargs -t -I {} cp {} {}.backup
awk
awk 是一个强大的文本分析工具,它是 Linux 中功能强大的数据处理引擎之一。
相对于 grep 的查找,sed 的编辑,awk 在其对数据分析并生成报告时,显得尤为强大。
主要用来将输入内容按列分割
其中的$1..$n表示第几例。$0表示整行。NF 总列数,NR 第几行,FS 输入的字段分隔符,默认空格或Tab
peach 100 Mar 1997 China
Lemon 150 Jan 1986 America
Pear 240 Mar 1990 Janpan
avocado 120 Feb 2008 china
awk '{print $0}' fruit.txt # 表示打印输出文件的每一整行的内容
awk '{print $1}' fruit.txt # 表示打印输出文件的每一行的第 1 列内容
awk '{print $1, $2}' fruit.txt
awk '/P.*/{print $0}' poetry.txt # 正则匹配P开头的行
注意,在 cmake 文件中, awk的参数前需要多加一个$,因为make文件中的$有特殊含义
find ${hotfix_res}${version}/ -name '*.go' | awk '{ cmd="go build -buildmode=plugin -o "$$0".so "$$0; printf cmd"\n"; system(cmd);}'
sed
sed 是字符流编辑器,一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。
sed 使用正则表达式替换文本
- my字符串替换成User’s (g 表示匹配所有,s 是替换指令,d 是删除指令,a 是追加,i 是插入…)
sed "s/my/User's/g" pets.txt
- sed替换文件内容
-i
表示直接在文件内替换,双引号"
需要加斜杠\
转义echo '"ai_time": 10,'|sed "s/\"ai_time\": [0-9]*/\"ai_time\": 6/g" sed -i "s/\"ai_time\": [0-9]*/\"ai_time\": 6/g" filename
sort
sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
sort 默认将每行按字符顺序升序输出
-b 去掉开头空白部分再比较
-c 输出第一个乱序的行,并返回1
-C 检查是否乱序,乱序返回1
-f 忽略大小写
-k [n] 指定第几列排序
-n 转换成数字来排序
-o [filename]重定向输出
-r 降序输出
-t [:] 指定分隔符
-u 去除重复行
find
- 按照时间排序指定目录的文件,保留最近的5个文件,从第6个开始删除
ls ${WORKSPACE} -t | grep 'servers_.*.tgz' | sed -n '6,$p' | xargs -I {} rm -f ${WORKSPACE}/{}
- 删除指定目录 5天之前修改的文件
find 参数说明find ${WORKSPACE} -type f -mtime +5 -name "servers_*" -exec rm -f ${WORKSPACE}/{} \;
例如查找文件内容修改发生在2天之内的文件-amin -n: 最后一次访问发生在 n分钟 之内 -amin n: 最后一次访问发生在距离当前时间 n分钟 至 (n+1)分钟 -amin +n: 最后一次访问发生在 (n+1)分钟 之外 -atime -n: 最后一次访问发生在 n天 之内 -atime n: 最后一次访问发生在 n天 至(n+1)天 -atime +n: 最后一次访问发生在 (n+1)天 之外 -cmin -n: 最后一次文件状态修改发生在 n分钟 之内 -cmin n: 最后一次文件状态修改发生在 n分钟 至 (n+1)分钟 -cmin +n: 最后一次文件状态修改发生在 (n+1)分钟 之外 -ctime -n: 最后一次文件状态修改发生在 n天 之内 -ctime n: 最后一次文件状态修改发生在 n天 至 (n+1) 天 -ctime +n: 最后一次文件状态修改发生在 (n+1)天 之外 -mmin -n: 最后一次文件内容修改发生在 n分钟 之内 -mmin n: 最后一次文件内容修改发生在 n分钟 至 (n+1)分钟 -mmin +n: 最后一次文件内容修改发生在 (n+1)分钟 之外 -mtime -n: 最后一次文件内容修改发生在 n天 之内 -mtime n: 最后一次文件内容修改发生在 n天 至 (n+1)天 -mtime +n: 最后一次文件内容修改发生在 (n+1)天 之外
find /var/log/hive/-name “*” -mtime -2
参考:
xargs; https://www.cnblogs.com/chyingp/p/linux-command-xargs.html
sort: https://www.cnblogs.com/51linux/archive/2012/05/23/2515299.html
sort命令:http://man.linuxde.net/sort
awk简明教程: https://coolshell.cn/articles/9070.html
sed简明教程:https://coolshell.cn/articles/9104.html
sed: http://einverne.github.io/post/2018/01/sed.html
find: https://blog.csdn.net/cqsizhuang/article/details/107220325
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 using1174@foxmail.com
文章标题: awk、xargs、sed、sort、find命令的使用
文章字数: 1,371
本文作者: Jun
发布时间: 2018-07-24, 20:02:00
最后更新: 2022-08-19, 20:12:46
原始链接: http://yoursite.com/2018/07/24/awk、xargs命令的使用/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。