在多值变量的每个单词中添加文本
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]
我有以下变量
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]