我想知道如何在文本文件中使用awk获取字段的数字子字符串,如下所示。我已经熟悉substr()函数了。但是,由于字段长度不固定,我不知道如何将文本与数字部分分开。
A.TXT
"Asd.1"
"bcdujcd.2"
"mshde.3333"
"deuhdue.777"
P.S。所有数字都与文本部分分开,并带有一个点(。)。
答案 0 :(得分:1)
您可以尝试这样:
rt$ echo "bcdujcd.2"|awk -F'[^0-9]*' '$0=$2'
答案 1 :(得分:1)
如果您不关心线路的任何非数字部分,只想将数字部分视为输出,您可以使用:
awk '{gsub(/[^[:digit:]]+/, " ")}7' A.txt
将生成:
1
2
3333
777
作为输出(记录的每一行都有一个前导空格)。
如果每行只能有一个数字字段,则""
中的" "
代替gsub
,而前导空格将会消失。如果它们出现在一条线上,则用空格替换将使多个数字字段由空格分隔。 (即"foo.88.bar.11"
变为88 11
而不是8811
)。
如果您只需要该行中每行的第二个(句点分隔)字段,那么awk -F. '{print $2}'
将会这样做。
答案 2 :(得分:1)
$ awk -F'[".]' '{print $3}' file
1
2
3333
777