Unix: Как я могу сохранить и отобразить мои результаты в столбцах, а не в виде огромной строки? - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть этот код внизу, и я хочу, чтобы он отображал мои конечные результаты в столбцах.Но вместо этого он сохраняет их в большую строку.У кого-нибудь есть какие-нибудь идеи?

echo -n Insert the filename
read input

Region=$(awk '{for(i=1;i<=NF;i++)if($i=="EVENT")print $(i+2),$(i+3),$(i+4)}' $input)
part1=$(awk '/EVENT/{nr[NR+2]}; NR in nr' $input | awk '{print $1,$2,$5,$6,$7}' $part1 | sed 's/\// /g' $part1 | sed 's/f/    /g' $part1)
part2=$(awk '/EVENT/{nr[NR+6]}; NR in nr' $input | awk '{print $2}' $part2)
echo "$part1 $part2 $Region"

Шаблон СОБЫТИЯ показан несколько раз в файле, на основании которого я создал 3 «переменные».

Мои результаты должны быть такими:

String1 String2 Region
String1 String2 Region
String1 String2 Region 
...

Но вместо этого отображается как:

Part1 Part1 Part1 Part1 ... Part2 Part2 Part2 ... Region Region Region ...

ОБНОВЛЕНО: я добавил «...» в своем последнем эхо, и теперь я получаю свои результаты в одном огромном столбце.как это:

Part1
Part1
Part1
...
Part2
Part2
...
Region
Region
Region
...

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

объединение столбцов в bash с paste

например,

$ paste <(echo -e "a\nb\nc") <(echo -e "1\n2\n3")

a       1
b       2
c       3

Скорее всего, вы можете сделать все в одном awk сценарии, но не ясно, что вы пытаетесьдобиться в размещенных скриптах;имена ваших переменных также отображаются в правой части имени файла.

0 голосов
/ 14 февраля 2019

Вы можете сохранить результаты ваших команд в массиве переменных и использовать цикл for для параллельного вывода из трех переменных, например:

$ a1=( $( echo a b c d ) )
$ a2=( $( echo A B C D ) )
$ a3=( $( echo A3 B3 C3 D3 ) )
$ for ((i=0; i < ${#a1[@]}; i++ )); do
>     echo ${a1[i]}, ${a2[i]}, ${a3[i]}.
> done
a, A, A3.
b, B, B3.
c, C, C3.
d, D, D3.
$

Сравнить сверсия, которая не использует переменные массива (обратите внимание, что отсутствует один уровень скобок)

$ a1=$( echo a b c d ) ; a2=$( echo A B C D ) ; a3=$( echo A3 B3 C3 D3 )
$ echo $a1 $a2 $a3
a b c d A B C D A3 B3 C3 D3
$ 
...