使用awk保持以#开头的标题行

时间:2015-12-29 10:19:50

标签: bash awk

我有很多想要处理的文件。对于每一个,我想删除第6列中的值小于50的任何行。我尝试使用:awk'($ 6> = 50)'。但是,这会从文件中删除标题行,我想保留它们。

标题的每一行都以“#”符号开头。所以我需要修改命令,以便它不会删除任何以#。

开头的行

2 个答案:

答案 0 :(得分:2)

说完

awk '$1 ~ /^#/ || ($6>=50)' file

这告诉awk打印与以下任何一个匹配的行:

  • 第一个字段以#开头。这样,领先的空间被忽略了,或者
  • 第6个字段大于或等于50。

小测试:

$ 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跳过剩余的模式/动作组合并继续下一行。