我正试图通过管道列出值xargs.这是一个简单的例子:
echo "Hello Hola Bonjour" | xargs -I _ echo _ Landon
Run Code Online (Sandbox Code Playgroud)
我希望这会输出以下内容:
Hello Landon
Hola Landon
Bonjour Landon
Run Code Online (Sandbox Code Playgroud)
相反,该命令输出:
Hello Hola Bonjour Landon
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
在-I,man xargs说
不带引号的空格不会终止输入项; 相反,分隔符是换行符
您可以指定不同的分隔符(至少在GNU xargs中):
printf 'Hello Hola Bonjour' | xargs -d' ' -I _ echo _ Landon
Run Code Online (Sandbox Code Playgroud)
更便携,\0用作分隔符并-0使用它:
printf '%s\0' Hello Hola Bonjour | xargs -0 -I _ echo _ Landon
Run Code Online (Sandbox Code Playgroud)