从文件中删除行

从文件中删除行

我有 4 列、10000 行的数据。我正在尝试删除第二列的值小于前一行第三列的行。

chr1        10        20        3 
chr1        15        30        9 
chr1        55        60        1

答案1

awk '$2 >= prev; {prev=$3}' file.txt

解释

  • awk <commands> file.txt:运行 awk file.txt
  • $2 >= prev:检查第二个字段是否$2大于或等于变量的内容prev。 (第一行未设置。)如果这是 true,则 awk 默认打印整行。 (即如果小于,则删除该行。)
  • {prev=$3}:将第三个字段的内容存储$3在变量中prev

然后对下一行重复此操作。 awk 会将第二个字段与 进行比较prev,后者现在包含前一行的第三个字段。有几点需要注意:

  • 我不确定您想要第一行什么,所以我只是根据您的需要手动包含/排除它。
  • 如果数据实际上是制表符分隔的,只需将以下标志添加到 awk 中以使其知道:-F'\t'

相关内容