xargs命令
:读取输入数据重新格式化后输出,将标准输入数据转换成命令行参数输出。
定义一个测试文件:
[danni@vm-xxx-18 study]$ cat test.txt
a b c d e
f g h i j k
l m n o p q r
s t u v w x y z
xargs默认命令是echo,空格是默认定界符。默认情况下,多行输入通过xargs实现了单行输出。
[danni@vm-xxx-18 study]$ cat test.txt | xargs
a b c d e f g h i j k l m n o p q r s t u v w x y z
-n 选项
:实现多行输出,-n指定每行输出的个数
[danni@vm-xxx-18 study]$ cat test.txt | xargs -n3
a b c
d e f
g h i
j k l
m n o
p q r
s t u
v w x
y z
-d 选项
:自定义一个定界符,通过指定定界符把输入隔开
[danni@vm-xxx-18 study]$ echo "hahaOhahaOhahaOhaha" | xargs -dO
haha haha haha haha
-I 选项
:使用-I指定一个替换字符串{},这个字符串在xargs扩展时会被替换掉,当-I与xargs结合使用,每一个参数命令都会被执行一次。也就是说对于前面输出的每一个数据都会被作为后面的参数使用,即输出的aaa会作为echo hello的参数使用。
[danni@vm-xxx-18 study]$ echo -e "aaa\nbbb\nccc" | xargs -I {} echo hello {}
hello aaa
hello bbb
hello ccc