Как получить желаемый результат, используя awk в unix - PullRequest
0 голосов
/ 23 сентября 2011

Я новичок в использовании awk, и застрял в проблеме.

У меня есть файл:

startpoint--A
endpoint--B
startpoint--C
endpoint--D

Я хочу вывод в колонке, как нужно, чтобычто под начальной точкой у меня есть все начальные переменные (A, C) и под конечной точкой все конечные переменные (B, D).Например:

startpoint  endpoint
 A          B
 C          D

Как мне сделать это с помощью awk?

Ответы [ 2 ]

1 голос
/ 23 сентября 2011

Предположительно, ваш файл данных чередуется startpoint и endpoint строк.В этом случае вы можете просто сохранить самые последние startpoint и распечатать их оба при обнаружении endpoint.

$ cat data.txt
startpoint--A
endpoint--B
startpoint--C
endpoint--D

$ cat points.awk
BEGIN { print "startpoint  endpoint" }
$1 == "startpoint" { sp = $3 }
$1 == "endpoint" { printf "%-12s%s\n", sp, $3 }

$ awk -F- -f points.awk data.txt
startpoint  endpoint
A           B
C           D
0 голосов
/ 23 сентября 2011

Не нужно awk, cut и paste сделают:

{
  printf "startpoint\tendpoint\n"
  cut -d '-' -f 3 data.txt | paste - -
} | column -t

Я предполагаю, что все ваши данные "правильно сформированы", причем конечная точка сразу же следует за начальной точкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...