bash

2013-08-26 25 views
8

içinde iki değişken sütun-sütun birleştirmek için iki değişken var, çok satır var.bash

echo "$VAR1" > /tmp/order 
echo "$VAR2" | paste /tmp/order - 

Ama bir geçici dosya olmadan da herhangi bir yol yoktur:

VAR1="1 
2 
3 
4" 

VAR2="ao 
ad 
af 
ae" 

ben bunu yapabileceğini biliyorum

VAR3="1ao 
2ad 
3af 
4ae" 

almak istiyor?

cevap

17

paste <(echo "$VAR1") <(echo "$VAR2") --delimiters ''

+0

<() operatörü nedir? Adlı –

+1

@KurtisNusbaum "<()" bir "işlem değiştirme" olarak adlandırılır. Tüm kabuklar bunu desteklemez, ancak en popüler olanlar şunları yapar: https://www.google.com/search?q=process+substitution –

2

Sen söyleyebiliriz:

$ VAR3=$(paste <(echo "$VAR1") <(echo "$VAR2")) 
$ echo "$VAR3" 
1 ao 
2 ad 
3 af 
4 ae 

net değil sonuçta ortaya çıkan dizi veya değil boşluklar isteyip. çalışan örneğiniz , yukarıdaki durumda olduğu gibi boşluklar içerecektir.

Eğer boşluk istemiyorsanız, yani 1ao yerine 1 ao arasında, o zaman söyleyebiliriz:

$ VAR3=$(paste <(echo "$VAR1") <(echo "$VAR2") -d '') 
$ echo "$VAR3" 
1ao 
2ad 
3af 
4ae 
+0

2 özdeş cevap almanın bir noktası nedir? –