如何在gawk中压制原始线条

如何在gawk中压制原始线条,awk,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 我不希望打印相同的第一行 谢谢 沃尔特这里有个分号 $ echo "8989889898 jA

为什么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
我不希望打印相同的第一行

谢谢


沃尔特

这里有个分号

$ 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

这里有一个分号

$ 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

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];}

现在,代码只有一个
条件{action}
结构,正如您所希望的,因此它可以满足您的需要。

匹配($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];}

现在代码只有一个
条件{action}
结构,正如您所希望的,所以它可以满足您的需要。

非常感谢您的精彩解释没有问题,但我想知道您为什么向我表示感谢,然后接受了另一个答案!是的,我只能接受一个答案,两个答案都是一样的。但你的观点有更多的解释。非常抱歉,我接受了另一个答案,但我也感谢你。非常感谢你的解释。没问题,但我想知道你为什么对我说谢谢,然后接受了另一个答案!是的,我只能接受一个答案,两个答案都是一样的。但你的观点有更多的解释。很抱歉,我接受了另一个,但我也感谢你。你的问题得到了答案,但是-你想用
[X0-9\\\-]
中的3个反斜杠做什么?这是错误的,但我不知道该告诉您使用什么,而不知道您认为它会做什么。@EdMorton one\和one-应该在可接受的字符列表中。正如-为了使其工作,我必须使用\\和\[]中的\-不,您不需要,括号表达式的开头或结尾处的
-
没有什么特殊之处,因此它不必转义。只需
[X0-9\\-]
即可。您也不需要在整个过程中使用paren,因此它可以是
/[X0-9\\-]{9,13}/
,然后使用
print arr[0]
访问保存的字符串。@EdMorton哦,好的,谢谢您帮助我改进。你得到了问题的答案,但是-你想用
[X0-9\\\-]
中的3个反斜杠做什么?这是错误的,但我不知道该告诉您使用什么,而不知道您认为它会做什么。@EdMorton one\和one-应该在可接受的字符列表中。正如-为了使其工作,我必须使用\\和\[]中的\-不,您不需要,括号表达式的开头或结尾处的
-
没有什么特殊之处,因此它不必转义。只需
[X0-9\\-]
即可。您也不需要在整个过程中使用paren,因此它可以是
/[X0-9\\-]{9,13}/
,然后使用
print arr[0]
访问保存的字符串。@EdMorton哦,好的,谢谢您帮助我改进。最好的