如何在Gawk压制原始线

时间:2018-07-11 08:37:04

标签: awk

为什么gawk首先写输入行?

     ws@i7$ echo "8989889898 jAAA_ALL_filenames.txt" | gawk  'match($0, /([X0-9\\\-]{9,13})/, arr); {print arr[1];}'

我的输出

          8989889898 jAAA_ALL_filenames.txt

          8989889898

我不想打印相同的第一行。

谢谢

沃尔特

2 个答案:

答案 0 :(得分:2)

您那里有一个流浪分号。

$ echo "8989889898 jAAA_ALL_filenames.txt" | gawk  'match($0, /([X0-9\\\-]{9,13})/, arr); {print arr[1];}'
8989889898 jAAA_ALL_filenames.txt
8989889898
$ echo "8989889898 jAAA_ALL_filenames.txt" | gawk  'match($0, /([X0-9\\\-]{9,13})/, arr) {print arr[1];}'
8989889898

答案 1 :(得分:2)

match($0, /([X0-9\\\-]{9,13})/, arr)后的分号表示您的脚本有效:

match($0, /([X0-9\\\-]{9,13})/, arr) { print $0 } # default action block inserted 
1 {print arr[1];} # default condition inserted

match返回一个“ true”值,以便打印整行。

要解决此问题,请删除分号:

match($0, /([X0-9\\\-]{9,13})/, arr) {print arr[1];}

现在,您的代码仅具有一个condition { action }结构,因此可以满足您的要求。