簡體   English   中英

如何使用awk找出某​​一行中的字段數?

[英]How to find out the number of fields in a certain line using awk?

如何使用awk找出某一行中的字段數,並且如果只有一個字段,我想在該行的末尾添加一些內容?

$ cat myFile
0: stackoverflow com
1: w3 org
2:
3: wikipedia org
4: 

我想要這樣的輸出:

$ cat myFile
0: stackoverflow com
1: w3 org
2: NULL
3: wikipedia org
4: NULL

添加一個測試字段數:

awk 'NF==1 { print $0, "NULL"; next }1' file

結果:

0: stackoverflow com
1: w3 org
2: NULL
3: wikipedia org
4: NULL
$ awk '{if (NF==0){print "NULL"}else print $0}' /tmp/myFile
stackoverflow com
w3 org
NULL
wikipedia org
NULL

NF是awk特殊變量,表示Number(of)Fields。 這就是其中包含值的NumberOfFields。 如果您的數據確實有編號的行,則可以更改與NF==1相比的值。 我以為這是使用編號工具或編輯器的人工產物。

else語句表示“任何字段數不為零的記錄,因此將打印具有1個或多個字段的記錄。

高溫超導

sed答案(我知道我沒話題):

sed 's/^\([[:digit:]]\+:\)[[:space:]]*$/& NULL/g' myFile

一個bash的答案(仍然是題外話):

while read -a a; do
    if [[ -z "${a[1]}" ]]; then
        echo "$a NULL"
    else
        echo "${a[@]}"
    fi
done < myFile

剝皮貓的方法不止一種!

 awk  'BEGIN{FS=OFS=":"}!$2{$2=" NULL"}1' file

測試:

kent$  cat test.txt 
0: stackoverflow com
1: w3 org
2:
3: wikipedia org
4:


kent$  awk  'BEGIN{FS=OFS=":"}!$2{$2=" NULL"}1' test.txt
0: stackoverflow com
1: w3 org
2: NULL
3: wikipedia org
4: NULL

暫無
暫無

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

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