【发布时间】:2018-05-01 12:50:03
【问题描述】:
我有一个非常简单的awk 问题:
我有以下文件test1.txt
ids op count
id1 op1 1
id7 op1 2
id13 op1 3
id4 op1 4
id10 op1 5
id11 op2 1
id2 op2 2
id8 op2 3
id14 op2 4
id5 op2 5
我想排除基于op 和count 列的某些行。例如 exclude op2 中 count 从 2 到 5 的任何内容,最后给我以下 test2.txt:
ids op count
id1 op1 1
id7 op1 2
id13 op1 3
id4 op1 4
id10 op1 5
id11 op2 1
id5 op2 5
我正在寻找可以执行以下操作的 awk 代码:
awk '{
if($2 ~ /op2/ && $3>1 && $3<5)
skip
else
print $0
}' test1.txt > test2.txt
这段代码确实有效。但我感谢任何关于 1 班轮的建议。
非常感谢!
【问题讨论】:
-
嗯,上面的代码实际上似乎适用于这个例子......
-
将条件移出 if 块并取反。