[英]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!="" && $2!= "" {$1==$2}1' OFS="\t"
使用awk:
awk -F '\t' -v OFS='\t' '$2 == "" || $2 != $3' filename
$2 == "" || $2 != $3
$2 == "" || $2 != $3
只是一個條件,因此如果為true,則執行默認操作(打印)。 $3 == ""
因為在這種情況下$2 == ""
或$2 != $3
是正確的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.