我们可以用管道将一个命令的stdout(标准输出)重定向到另一个命令的stdin(标准输入)。例如:
#cat foo.txt | grep "test"
但是,有些命令只能以命令行参数的形式接受数据,而无法通过stdin接受数据流。
该xargs命令出场了,它擅长将标准输入数据转换成命令行参数。
xargs命令应紧跟管道操作符后,以标准输入 stdin(0)作为主要的源数据流。
xargs命令:
-n:指定输出参数个数
-d:指定定界符
1.格式化输出
- 将多行输入装换为单行输出
xargs 用空格替换掉换行符‘\n’,实现多行转单行输出。
[root@nginx ~]# cat test
1 2 3 4 5
6 7 8
9 0
[root@nginx ~]# cat test | xargs
1 2 3 4 5 6 7 8 9 0
- 将单行转多行输出
指定每行最大参数n,
[root@nginx ~]# cat test | xargs -n 3
1 2 3
4 5 6
7 8 9
0
- 自己指定定界符来分隔
-d:指定定界符
[root@nginx ~]# cat /etc/passwd | awk NR==1 |