在多值变量的每个单词中添加文本

Add text in every word of a multi value variable

我有以下变量

var="text1 value1.text value2"

我想在变量中每个单词的开头和结尾添加特定字符

我想要的结果如下

[text1] [value1.text] [value2]

到目前为止我只能在所有变量内容中添加文本

echo [$var]

输出

[text1 value1.text value2]

你能帮我看看怎么做吗

最好用awk

您可以使用这个 awk:

awk '{for (i=1; i<=NF; ++i) $i = "[" $i "]"} 1' <<< "$var"

[text1] [value1.text] [value2]

或者没有循环的 gnu-awk 解决方案:

awk -v RS='[[:space:]]' '{[=11=] = "[" [=11=] "]"; ORS=RT} 1' <<< "$var"

[text1] [value1.text] [value2]

不清楚是要更改 var 的值还是只输出 var 的内容并添加方括号所以选择:

$ var='text1 value1.text value2'

$ echo "[${var// /] [}]"
[text1] [value1.text] [value2]

$ var="[${var// /] [}]"
$ echo "$var"
[text1] [value1.text] [value2]
set -f 
var="text1 value1.text value2"
printf -v var "[%s] " $var
echo "${var% }"

输出:

[text1] [value1.text] [value2]