如何使用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特殊变量含义数字(的)字段。这将是其中有值的numberOffield。如果您的数据确实具有编号行,则可以更改与NF==1
相比的值。我以为这是使用编号实用程序或编辑器的工件。
else
语句的意思是"任何字段零#的记录,因此将使用1个或更多字段打印记录。
ihth
a 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
有不止一种方法来皮肤猫!