簡體   English   中英

如果條件僅在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!="" && $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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM