awk несколько строк и результаты печати - PullRequest
0 голосов
/ 24 апреля 2019

Я хотел бы напечатать некоторые конкретные части результатов с помощью awk после многократного выбора шаблона.

Что у меня есть (filetest):

A    : 1
B    : 2

Я ожидаю получить:

1 - B : 2

Итак, только результат первого ряда, затем весь второй ряд. Черта была добавлена ​​мной.

У меня есть это:

awk -F': ' '$1 ~ /A|B/ { printf "%s", $2 "-" }' filetest

Результат:

1 -2 -

И я не могу получить полный второй ряд, не показывая только результат первого

awk -F': ' '$1 ~ /A|B/ { printf "%s", $2 "$1" }' filetest

Результат:

1 -    A    2 -    B 

Есть ли способ напечатать в той же строке, именно тот столбец / строка, которая мне нужна с awk? В моем случае R1C2 - R2C1: R2C2?

Спасибо!

Ответы [ 5 ]

1 голос
/ 24 апреля 2019

Это будет делать то, что вы ожидаете:

awk -F: '/^A/{printf "%s -", $2}/^B/{print}' filetest
1 голос
/ 24 апреля 2019
$ awk -F: 'NR%2 {printf "%s - ", $2; next}1' filetest
1 - B : 2
0 голосов
/ 25 апреля 2019

пробовал на GNU AWK

awk -F':' 'NR==1{s=$2;next}{FS="";s=s" - "$0;print s}' filetest
0 голосов
/ 24 апреля 2019

Я бы, вероятно, согласился с ответом @ jas , поскольку он понятен, прост и не связан с вашими значениями данных, а просто показывает альтернативный подход:

$ awk '{printf "%s", (NR%2 ? $3 " - " : $0 ORS)}' file
1 - B    : 2
0 голосов
/ 24 апреля 2019

Вы можете попробовать это

awk -F:  'NR%2==1{a=$2; } NR%2==0{print a " - " $0}' file

вывод

  1 - B : 2
...