[英]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.