如何使用AWK找出特定行中的字段数

  • 本文关键字:字段 何使用 AWK linux bash 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  '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

有不止一种方法来皮肤猫!

最新更新