如何在变量的bash shell中插入新行?

时间:2010-06-11 06:05:31

标签: bash

我有两个变量var1和var2。每个变量的内容都来自bash shell grep命令。

echo $var1打印
123 465 326 8080

echo $var2打印
sila kiran hinal juku

现在我想在Linux bash shell中将上述内容打印成以下格式

123 sila
465 kiran
326 hinal
8080 juku

那么如何在bash shell中以这种方式打印?

5 个答案:

答案 0 :(得分:2)

怎么样?

$ paste -d" " <(echo $var1 | xargs -n1) <(echo $var2 | xargs -n1)

我们甚至可以跳过 echo

$ paste -d" " <(xargs -n1 <<< $var1) <(xargs -n1 <<< $var2)

答案 1 :(得分:1)

没有循环:

$ var1="123 465 326 8080"
$ var2="sila kiran hinal juku"
$ var1=($var1); var2=($var2)
$ saveIFS=IFS
$ IFS=$'\n'
$ paste <(echo "${a[*]}") <(echo "${b[*]}"
$ IFS=$saveIFS

使用循环(假设两个字符串具有相同的字数):

$ var1="123 465 326 8080"
$ var2="sila kiran hinal juku"
$ var2=($var2)
$ for s in $var1; do echo $s ${vars[i++]}; done

答案 2 :(得分:1)

使用文件描述符和while循环:

var1="123 465 326 8080"
var2="sila kiran hinal juku"

IFS=" " exec 7< <(printf "%s\n" $var1) 8< <(printf "%s\n" $var2)

while read -u7 f1 && read -u8 f2; do
   echo "$f1 $f2"
done

答案 3 :(得分:0)

我将它们存储到数组$var1[]$var2[]而不是一些长字符串中,然后使用循环遍历数组,以便按照您想要的方式输出它。

如果您不想使用数组,可以使用awk和循环中的迭代器一次打印一个名称。

答案 4 :(得分:0)

join <(echo $var1 | sed -r  's/ +/\n/g' | cat -n) <(echo $var2 | sed -r  's/ +/\n/g' | cat -n) -o "1.2,2.2"