如何使用 xargs 替换但保留空格分隔符?

如何使用 xargs 替换但保留空格分隔符?

考虑以下xargs用法:

echo Alice Bob Carol | xargs -n1 echo

它会产生三个像这样的 echo 语句

echo Alice 
echo Bob 
echo Carol 

考虑这种修改后的xargs用法:

echo Alice Bob Carol | xargs -n1 -I% echo Hello, %. How are you?

它生成一个 echo 语句,而不是所需的三个:

echo Hello, Alice Bob Carol. How are you?

这是因为-I改变了输入流的分隔方式,如手册页所述:

不带引号的空格不会终止输入项;相反,分隔符是换行符

使用替换技术时是否可以保留空格分隔符?

我想到最好的办法是使用-d指定空格分隔符,有没有更好的方法?

echo -n Alice Bob Carol | xargs -n1 -I% -d\  echo Hello, %. How are you?

相关内容