专注于快乐的事情

Linux shell 总结

管道 与 xargs

管道将一个命令的stdout(标准输出)重新定向到另一个命令的stdin(标准输入),也就是说接收标准输入的命令才可以用作管道右边。

常用来作为接收数据管道命令有:sed,awk,cut,head,top,less,more,wc,join,sort,split 等等,都是些文本处理命令

为什么要有xargs?

有些命令例如cp,echo等,只能接受参数,就需要使用xargs。

xargs是一个很有用的命令,它擅长将标准输入数据转换成命令行参数。xargs能够处理stdin并将其转换为特定命令的命令行参数。

使用例子

将单行输入转换成多行输出

echo "1 2 3 4 5 6 7 8 9" | xargs -n 3
将输出
1 2 3
4 5 6
7 8 9

用-d选项为输入指定一个定制的定界符

echo "splitXsplitXsplitXsplit" | xargs -d X

从文本读取,一行一个

cat args.txt | xargs -n 1 ./cecho.sh

固定不变的命令参数,使用I

例如
./cecho.sh –p arg1 –l
arg1是唯一的可变文本,其余部分都保持不变

xargs有一个选项-I,指定一个替换字符串,这个字符串在xargs扩展时会被替换掉。
当-I与xargs结合使用时,对于每一个参数,命令都会被执行一次。

cat args.txt | xargs -I {} ./cecho.sh -p {} -l

参考

评论系统未开启,无法评论!