我刚接触使用awk,我遇到了问题。
我有一个文件:
startpoint--A
endpoint--B
startpoint--C
endpoint--D
我想在列中按需要输出,以便在起始点下,我有所有的起始变量(A,C),并在端点下所有的末尾变量(B,D)。例如:
startpoint endpoint
A B
C D
如何使用awk完成此操作?
答案 0 :(得分:1)
据推测,您的数据文件会替换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
答案 1 :(得分:0)
不需要awk,cut
和paste
会:
{
printf "startpoint\tendpoint\n"
cut -d '-' -f 3 data.txt | paste - -
} | column -t
我假设您的所有数据都是“格式良好的”,并且终点紧跟在起点之后。