我有两个变量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中以这种方式打印?
答案 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"