如何使用 找出某一行中的字段数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 '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
$ 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 个或多个字段的记录。
IHTH
一个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
给猫剥皮的方法不止一种!