Sea*_*red 7 shell io-redirection xargs
$ seq 1 3
1
2
3
$ seq 1 3 | xargs echo
1 2 3
$
Run Code Online (Sandbox Code Playgroud)
seq 1 3
用任何在标准输出上每行列出条目的任何命令替换。我怎样才能或多或少地得到您所期望的,即单独行 ( echo 1; echo 2; echo 3;
)上的条目?
Joh*_*024 15
通常xargs
会在一个命令行上放置多个参数。要将其限制为一次一个参数,请使用以下-n
选项:
$ seq 3 | xargs -n 1 echo
1
2
3
Run Code Online (Sandbox Code Playgroud)
来自man xargs
:
-n max-args
每个命令行最多使用 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
Run Code Online (Sandbox Code Playgroud)
更多的研究揭示了Make xargs 对每一行输入执行一次命令的答案:
$ seq 1 3 | xargs -L 1 echo
1
2
3
Run Code Online (Sandbox Code Playgroud)