在bash中为每行的每个单词添加前缀

Chr*_*oen 6 bash grep sed

我有一个名为deps的变量:

deps='word1 word2'
Run Code Online (Sandbox Code Playgroud)

我想为变量的每个单词添加一个前缀.

我尝试过:

echo $deps | while read word do \ echo "prefix-$word" \ done
Run Code Online (Sandbox Code Playgroud)

但我得到:

bash:意外令牌"完成"附近的语法错误

任何帮助?谢谢

SLe*_*ort 16

用sed:

$ deps='word1 word2'
$ echo "$deps" | sed 's/[^ ]* */prefix-&/g'
prefix-word1 prefix-word2
Run Code Online (Sandbox Code Playgroud)


Hei*_*ann 5

对于表现良好的字符串,最好的答案是:

printf "prefix-%s\n" $deps
Run Code Online (Sandbox Code Playgroud)

正如123在对fedorqui的回答的评论中所建议的那样.

说明:

  • 如果没有引用,bash会在调用之前$deps根据$IFS(默认为" \n\t")分割内容printf
  • printf 评估每个提供的参数的模式,并将输出写入stdout.
  • printf 是内置的shell(至少对于bash而言)并且不会分叉另一个进程,因此这比基于sed的解决方案更快.