为什么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
我不想打印相同的第一行。
谢谢
沃尔特
答案 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 }
结构,因此可以满足您的要求。