如果 nth space 之后的字母符合条件,如何删除一行?

How to delete a line if the letter after nth space matches a criteria?

我有一个大文本文件,其中的数据如下所示:

ATOM 3515 CA GLY C 43 1.094 36.439 24.619 1.00 44.14 C

如何根据第 4 个 space 之后的字符是否为 'C' 来删除一行?我已经看到了一种使用 cut like

的方法
cut -f1,4 -d' ' 

这会删除匹配之外的所有内容。

有没有办法对整条线做到这一点?我可以通过其他方式看到一些方法,但我想专门在第 4 次 space 之后进行,这样我就可以确定(或更多)它不会解析出错误文件深处某处的位。

How would I delete a line, depending on whether the Character after the 4th space is a 'C'

您可以为此使用 awk:

awk ' !~ /^C/' file
  • </code> 是第 5 个字段,即第 4 个 space</li> 之后的字段 <li><code>/^C/ 是一个检查以断言第 5 个字段以 C
  • 开头

您也可以使用 substr 函数获得相同的输出:

awk 'substr(, 1, 1) != "C"' file