2014-12-27 4 views
1

У меня есть 2 файла: /tmp/first.txt и /tmp/last.txtБаш скрипт простой массив

cat /tmp/first.txt 
john 
adam 
max 

cat /tmp/last.txt 
smith 
moore 
caviar 

Я хочу, чтобы объединить содержимое этих двух файлов, то (выход), как это:

john smith 
adam moore 
max caviar 

, что я уже сделал:

first=() 
getfirst() { 
    i=0 
    while read line # Read a line 
    do 
     array[i]=$line # Put it into the array 
     i=$(($i + 1)) 
    done < $1 
} 
getfirst "/tmp/first.txt" 
for a in "${array[@]}" 
do 
     echo "$a" 
done 

last=() 
getlast() { 
    i=0 
    while read line # Read a line 
    do 
     array[i]=$line # Put it into the array 
     i=$(($i + 1)) 
    done < $1 
} 
getlast "/tmp/first.txt" 
for b in "${array[@]}" 
do 
     echo "$b" 
done 

Я сделал некоторый взгляд Алика е (с использованием итераций):

for x in {1..2} 
do 
echo $a[$x] $b[$x]; 
done 

но выход только:

max caviar 
+0

Y ou создайте 'first' и' last' массивы, но никогда не используйте их. Затем вы получаете доступ к массивам 'a' и' b', но они не были объявлены как массивы, они всего лишь переменные итерации в двух циклах 'for'. – Barmar

ответ

6

Более простым решением является использование paste:

$ paste -d ' ' first.txt last.txt 
john smith 
adam moore 
max caviar 

Если вы не имеете paste, то с помощью массивы:

$ first=($(cat first.txt)) 
$ last=($(cat last.txt)) 
$ for ((i = 0; i < 3; ++i)); do echo ${first[$i]} ${last[$i]}; done 
john smith 
adam moore 
max caviar 
+0

хорошо сделано ..... john smith adam moore max caviar – moengoet

+0

правильный ... спасибо – moengoet

Смежные вопросы