我有兩個變量var1和var2。每個變量的內容來自bash shell grep命令。如何在bash shell中爲變量插入新行?
echo $var1
打印
123 465 326 8080
echo $var2
打印
sila kiran hinal juku
現在我想上面打印到Linux中的bash以下格式外殼
123 sila 465 kiran 326 hinal 8080 juku
那麼,如何可以打印這種方式在bash shell?
我有兩個變量var1和var2。每個變量的內容來自bash shell grep命令。如何在bash shell中爲變量插入新行?
echo $var1
打印
123 465 326 8080
echo $var2
打印
sila kiran hinal juku
現在我想上面打印到Linux中的bash以下格式外殼
123 sila 465 kiran 326 hinal 8080 juku
那麼,如何可以打印這種方式在bash shell?
沒有一個循環:
$ 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
怎麼樣?
$ paste -d" " <(echo $var1 | xargs -n1) <(echo $var2 | xargs -n1)
我們甚至可以跳過呼應:
$ paste -d" " <(xargs -n1 <<< $var1) <(xargs -n1 <<< $var2)
我把它們存儲陣列$var1[]
和$var2[]
,而不是一些長字符串,然後遍歷數組與一個循環輸出它是你想要的方式。
如果您不想使用數組,您可以使用awk和循環中的迭代器逐個打印出名稱。
join <(echo $var1 | sed -r 's/ +/\n/g' | cat -n) <(echo $var2 | sed -r 's/ +/\n/g' | cat -n) -o "1.2,2.2"
使用文件描述符和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
你能縮進與4位輸出部分?我認爲你有多行字符串,而現在的一切都顯示在一行上。 4空格縮進可以使用'join'命令將其編碼爲 – 2010-06-11 06:08:11
,但我需要了解如何創建$ var1和$ var2。 – msw 2010-06-11 06:25:57