$ seq 1 3
1
2
3
$ seq 1 3 | xargs echo
1 2 3
$
seq 1 3
在心里用任何在标准输出上列出每行一个条目的命令替换。我怎样才能或多或少地得到你所期望的东西,即单独行(echo 1; echo 2; echo 3;
)上的条目?
答案1
通常xargs
会在一个命令行上放置多个参数。要将其一次限制为一个参数,请使用以下-n
选项:
$ seq 3 | xargs -n 1 echo
1
2
3
文档
从man xargs
:
-n 最大参数
每个命令行最多使用 max-args 个参数。如果超出大小(请参阅 -s 选项),则将使用少于 max-args 的参数,除非给出 -x 选项,在这种情况下 xargs 将退出。
-n
和之间的区别-L
-L
类似,但有一个额外的功能:与 不同的是-n
,带有尾随空白的行将继续到下一行。观察:
$ echo $'1 \n2\n3\n4'
1
2
3
4
$ echo $'1 \n2\n3\n4' | xargs -L 1 echo
1 2
3
4
$ echo $'1 \n2\n3\n4' | xargs -n 1 echo
1
2
3
4
答案2
更多的研究揭示了答案让 xargs 对每行输入执行一次命令:
$ seq 1 3 | xargs -L 1 echo
1
2
3