![](/img/trans.png)
[英]how to edit a line using sed or awk in linux containing a certain number or string
[英]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.