如何 运行 if 条件仅在 awk 中的某些列上
How to run if condition only on certain columns in awk
我有一个包含如下所示列的文件:
row1 0.15 0.03
row2 0.06 0.028
row3 0.05 0.05
row4
row5 0.09
row6
如果 col2=col3 中的值,我想通过删除行来过滤文件。这是写“$2=$3”的非常简单的条件。但是,当应用 $2=$3 条件时,还会过滤 col2 和 col3 中具有空白值的行。我希望此条件仅在具有值的行上为 运行。示例输出如下所示。仅过滤第 3 行。即使也满足条件它没有任何整数值。
row1 0.15 0.03
row2 0.06 0.028
row4
row5 0.09
row6
我知道这很简单,但是当我尝试以下方式和其他几种方式时它不起作用,它会打印原始文件。
awk -F '\t' '!="" && != "" {==}1' OFS="\t"
使用 awk:
awk -F '\t' -v OFS='\t' ' == "" || != ' filename
- 代码
== "" || !=
只是一个条件,如果为真则执行默认操作(打印)。
- 不需要显式检查
== ""
,因为在这种情况下 == ""
或 !=
为真。
我有一个包含如下所示列的文件:
row1 0.15 0.03
row2 0.06 0.028
row3 0.05 0.05
row4
row5 0.09
row6
如果 col2=col3 中的值,我想通过删除行来过滤文件。这是写“$2=$3”的非常简单的条件。但是,当应用 $2=$3 条件时,还会过滤 col2 和 col3 中具有空白值的行。我希望此条件仅在具有值的行上为 运行。示例输出如下所示。仅过滤第 3 行。即使也满足条件它没有任何整数值。
row1 0.15 0.03
row2 0.06 0.028
row4
row5 0.09
row6
我知道这很简单,但是当我尝试以下方式和其他几种方式时它不起作用,它会打印原始文件。
awk -F '\t' '!="" && != "" {==}1' OFS="\t"
使用 awk:
awk -F '\t' -v OFS='\t' ' == "" || != ' filename
- 代码
== "" || !=
只是一个条件,如果为真则执行默认操作(打印)。 - 不需要显式检查
== ""
,因为在这种情况下== ""
或!=
为真。