我有很多想要处理的文件。对于每一个,我想删除第6列中的值小于50的任何行。我尝试使用:awk'($ 6> = 50)'。但是,这会从文件中删除标题行,我想保留它们。
标题的每一行都以“#”符号开头。所以我需要修改命令,以便它不会删除任何以#。
开头的行答案 0 :(得分:2)
说完
awk '$1 ~ /^#/ || ($6>=50)' file
这告诉awk
打印与以下任何一个匹配的行:
#
开头。这样,领先的空间被忽略了,或者小测试:
$ cat a
a1 2 3 4 5 52
a2 2 3 4 5 52
#a3 2 3 4 5 12
#a4 2 3 4 5 12
a5 2 3 4 5 12
$ awk '$1 ~ /^#/ || ($6>=50)' a
a1 2 3 4 5 52
a2 2 3 4 5 52
#a3 2 3 4 5 12
#a4 2 3 4 5 12
答案 1 :(得分:0)
这听起来像是脚本中的第一个模式/操作语句
/^#/ { print; next }
next
语句导致awk跳过剩余的模式/动作组合并继续下一行。