如何在bash中向变量的每一行追加另一个变量?
我有一个名为concat的变量(两个变量之间的粘贴命令的结果)。Concat是一个包含字符串的多行变量:如何在bash中向变量的每一行追加另一个变量?,bash,variables,sed,append,Bash,Variables,Sed,Append,我有一个名为concat的变量(两个变量之间的粘贴命令的结果)。Concat是一个包含字符串的多行变量: strawberrie red banana yellow apple green 排版结果-p concat: declare --concat ="strawberrie red banana yellow apple green" 我需要在该变量每行的开头追加另一个名为type的变量: fruit 对变量数组进行回显后需要得到的结果(编辑:
strawberrie red
banana yellow
apple green
排版结果-p concat:
declare --concat ="strawberrie red
banana yellow
apple green"
我需要在该变量每行的开头追加另一个名为type的变量:
fruit
对变量数组进行回显后需要得到的结果(编辑:它不是数组,但我这样调用它)
我尝试了sed,但没有成功:
回声“$concat”| sed”/^/$type”
未找到sed命令时返回错误(即使sed正常工作)
数组=$(sed'/^/$type')
只是不起作用
我在互联网上找到了许多其他的解决方案,但没有一个对我有效(我不知道如何正确使用sed,所以我想我可能写了一些未修改的选项)
我需要使用哪个命令来实现这一点(你能解释一下你在其中使用的选项吗,这样我就不会在没有学习的情况下粘贴它)
编辑:这是我用来将变量fruit附加到变量concat并保存在变量数组中的代码(也是一个字符串):
array=$(sed“s/^/$type/g”Awk是一个选项:
awk -v var="fruit" '{ print var" "$0 }' <<< "$varble"
awk-v var=“fruit”{print var”“$0}'假设:
concat
是一个包含多行数据集的变量
- OP希望在
concat
的每一行前面加上“${type}”
,然后将每一行作为一个单独的条目存储在一个名为array
我们的数据:
$ concat="strawberrie red
banana yellow
apple green"
在每行前面加上type=fruit
+(空格):
根据您的描述,(对我来说)不清楚${concat}
是一个多行值变量还是一个多条目数组;请使用排版-p concat
的输出更新问题,您的sed是正常的,您只是忘记了comands
:echo“$concat”| sed“s/^/$type/”
应该有效。请不要通过破坏您的帖子来为其他人做更多的工作。通过在Stack Exchange网络上发布,您已授予Stack Exchange在下的不可撤销的权利来分发该内容(即,无论您未来的选择如何)。根据堆栈交换策略,发布的是未被破坏的帖子版本。因此,任何被破坏的帖子都将被还原。如果您想了解有关删除帖子的更多信息,请参阅:谢谢,它成功了!For sed:您为什么使用{}在变量之间?s/do在^之前做什么?和/g做什么?re:大括号-请参阅和;re:sed s/g
-请参阅
awk -v var="fruit" '{ print var" "$0 }' <<< "$varble"
$ concat="strawberrie red
banana yellow
apple green"
$ type=fruit
$ sed "s/^/${type} /g" <<< "${concat}"
fruit strawberrie red
fruit banana yellow
fruit apple green
$ IFS=$'\n' read -d '' -r -a array < <(sed "s/^/${type} /g" <<< "${concat}")
$ typeset -p array
declare -a array=([0]="fruit strawberrie red" [1]="fruit banana yellow" [2]="fruit apple green")
$ for i in "${!array[@]}"
do
echo "${i} - ${array[${i}]}"
done
0 - fruit strawberrie red
1 - fruit banana yellow
2 - fruit apple green