Linux下如何将两个变量的值按行拼接为指定格式(分隔符为|)
实现方法分享
这需求挺典型的,我给你几个简单好用的Shell命令方案,都能轻松生成你要的输出:
方法一:用for循环(直观易懂)
这个方式逻辑最直白,适合刚接触Shell的朋友理解:
a="p|q" b="x y z" for item in $b; do echo "$a|$item" done
它会逐个取出变量b里用空格分隔的每个元素,再和变量a的内容用|拼接后输出。
方法二:用awk一行搞定(简洁高效)
如果想写得更紧凑,用awk一行命令就能完成:
a="p|q" b="x y z" echo "$b" | awk -v prefix="$a" '{for(i=1;i<=NF;i++) print prefix"|"$i}'
这里用-v参数把变量a传递给awk作为prefix,然后awk会遍历输入的每个字段(NF代表总字段数),逐个拼接后打印。
方法三:用xargs快速处理
xargs也能轻松实现这个需求,代码更短:
a="p|q" b="x y z" echo "$b" | xargs -n1 echo "$a|"
xargs -n1会把b里的每个元素单独拆分出来,然后和$a|拼接后输出。
内容的提问来源于stack exchange,提问作者pradeep
相关产品推荐
相关产品推荐

