簡體   English   中英

如何在IF條件下使用AWK

[英]How to use AWK Using with IF Condition

我需要使用AWK命令在文件中查找分隔符的數量,如果該數量超過預期,則需要捕獲記錄。

使用的代碼:

awk 'BEGIN { FS= "^A"; if ( 31 < NF-1) print $0 }'  file.dat

但它不起作用。

作為fedorqui的注釋,BEGIN塊中沒有任何數據。 您必須至少讀取1條記錄才能確定您擁有多少個字段:

awk -F"^A" 'NR==1 && NF >= 32 {exit} {print}'  file.dat

假設"^A"是兩個字符的字符串

awk 'BEGIN { FS= "\\^A"} NF-1 > 32'  file.dat

會這樣做,因為{print}是匹配的默認操作,並且兩個最常見的awk實例(gawk和mawk)都將"\\\\^A"轉換為文字插入符,后跟字母A

另一方面,如果"^A"表示Control-A ,則在shell提示符下鍵入該行時必須正確引用控制字符(例如,在bash + readline中為Control-V Control-A ),並且不得使用反斜杠。

稍短的版本:

awk _F"^A" 'NF > 32'  file.dat

您最初的構造是31 < NF-1 ,這只是NF>32的更復雜的表達方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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