我有一个程序将文本发送到stdout。但我只想保留那些第五列不是'*'的行。这是星号char,而不是捕获所有内容的正则表达式。我似乎无法使用逃生,我已经尝试了
./a.out |awk '$5!=* {print}'
awk: $5!=* {print}
awk: ^ syntax error
./a.out |awk '$5!=\* {print}'
awk: $5!=\* {print}
awk: ^ backslash not last character on line
Awk当然不是必需品,但我认为这将是最简单的。
由于
答案 0 :(得分:4)
awk
与大多数Algol / C系列语言相似;文字字符串需要字符串引号。
awk '$5 != "*" {print}'
答案 1 :(得分:2)
试试这个:
awk '$5!="*"{print}'
答案 2 :(得分:1)
Perl:
perl -ane 'print unless $F[4] eq q(*)' file
-n
开关在脚本周围包装此循环,以在命令行上读取文件名参数:
LINE:
while (<>) {
... # your script here
}
-a
自动将线(在空白处)自动分成一个名为@F. Unlike
awk` $ F [0]的预先声明的数组,仅为第一个字段。
-e
参数只是你的脚本。
答案 3 :(得分:-1)
这可能对您有用:
awk '$5 !~ /^[*]$/' file