如何在unix中使用awk获得所需的输出

时间:2011-09-23 05:34:19

标签: unix awk

我刚接触使用awk,我遇到了问题。

我有一个文件:

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

我想在列中按需要输出,以便在起始点下,我有所有的起始变量(A,C),并在端点下所有的末尾变量(B,D)。例如:

startpoint  endpoint
 A          B
 C          D

如何使用awk完成此操作?

2 个答案:

答案 0 :(得分:1)

据推测,您的数据文件会替换startpointendpoint行。在这种情况下,您只需保存最新的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

答案 1 :(得分:0)

不需要awk,cutpaste会:

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

我假设您的所有数据都是“格式良好的”,并且终点紧跟在起点之后。