使用awk获取字段的数字子字符串

使用awk获取字段的数字子字符串,awk,text-processing,Awk,Text Processing,我想知道如何在文本文件中使用awk获得字段的数字子字符串,如下所示。我已经熟悉substr()函数。然而,由于字段的长度不是固定的,我不知道如何将文本和数字部分分开 A.txt 注意:所有数字都用一个单点(.)与文本部分分开。您可以这样尝试: rt$ echo "bcdujcd.2"|awk -F'[^0-9]*' '$0=$2' 您可以这样尝试: rt$ echo "bcdujcd.2"|awk -F'[^0-9]*' '$0=$2' 您可以这样尝试: rt$ echo "bcdujc

我想知道如何在文本文件中使用awk获得字段的数字子字符串,如下所示。我已经熟悉substr()函数。然而,由于字段的长度不是固定的,我不知道如何将文本和数字部分分开

A.txt

注意:所有数字都用一个单点(.)与文本部分分开。

您可以这样尝试:

rt$ echo "bcdujcd.2"|awk -F'[^0-9]*' '$0=$2' 
您可以这样尝试:

rt$ echo "bcdujcd.2"|awk -F'[^0-9]*' '$0=$2' 
您可以这样尝试:

rt$ echo "bcdujcd.2"|awk -F'[^0-9]*' '$0=$2' 
您可以这样尝试:

rt$ echo "bcdujcd.2"|awk -F'[^0-9]*' '$0=$2' 

如果您不关心行的任何非数字部分,只想将数字部分作为输出,则可以使用:

awk '{gsub(/[^[:digit:]]+/, " ")}7' A.txt
这将产生:

 1
 2
 3333
 777
作为输出(每条记录行上都有一个前导空格)

如果每行只能有一个数字字段,则在
gsub
中,上面的替换可以是
而不是
,前导空格将消失。如果多个数值场出现在一条直线上,则用空格替换将它们用空格隔开。(即
“foo.88.bar.11”
变为
88 11
,而不是
8811


如果您只需要该排序的每行的第二个(以句点分隔)字段,则
awk-F.{print$2}'
将执行该操作。

如果您不关心该行的任何非数字部分,只想将数字部分作为输出,则可以使用:

awk '{gsub(/[^[:digit:]]+/, " ")}7' A.txt
$ awk -F'[".]' '{print $3}' file
1
2
3333
777
这将产生:

 1
 2
 3333
 777
作为输出(每条记录行上都有一个前导空格)

如果每行只能有一个数字字段,则在
gsub
中,上面的替换可以是
而不是
,前导空格将消失。如果多个数值场出现在一条直线上,则用空格替换将它们用空格隔开。(即
“foo.88.bar.11”
变为
88 11
,而不是
8811


如果您只需要该排序的每行的第二个(以句点分隔)字段,则
awk-F.{print$2}'
将执行该操作。

如果您不关心该行的任何非数字部分,只想将数字部分作为输出,则可以使用:

awk '{gsub(/[^[:digit:]]+/, " ")}7' A.txt
$ awk -F'[".]' '{print $3}' file
1
2
3333
777
这将产生:

 1
 2
 3333
 777
作为输出(每条记录行上都有一个前导空格)

如果每行只能有一个数字字段,则在
gsub
中,上面的替换可以是
而不是
,前导空格将消失。如果多个数值场出现在一条直线上,则用空格替换将它们用空格隔开。(即
“foo.88.bar.11”
变为
88 11
,而不是
8811


如果您只需要该排序的每行的第二个(以句点分隔)字段,则
awk-F.{print$2}'
将执行该操作。

如果您不关心该行的任何非数字部分,只想将数字部分作为输出,则可以使用:

awk '{gsub(/[^[:digit:]]+/, " ")}7' A.txt
$ awk -F'[".]' '{print $3}' file
1
2
3333
777
这将产生:

 1
 2
 3333
 777
作为输出(每条记录行上都有一个前导空格)

如果每行只能有一个数字字段,则在
gsub
中,上面的替换可以是
而不是
,前导空格将消失。如果多个数值场出现在一条直线上,则用空格替换将它们用空格隔开。(即
“foo.88.bar.11”
变为
88 11
,而不是
8811



如果您只需要该排序的每行的第二个(以句点分隔)字段,那么
awk-F.{print$2}'
就可以了。

谢谢。但我不明白“回声”部分的意义是什么?!!1@user3684042:-这只是为了回应结果。你可以不用它!谢谢但我不明白“回声”部分的意义是什么?!!1@user3684042:-这只是为了回应结果。你可以不用它!谢谢但我不明白“回声”部分的意义是什么?!!1@user3684042:-这只是为了回应结果。你可以不用它!谢谢但我不明白“回声”部分的意义是什么?!!1@user3684042:-这只是为了回应结果。你可以不用它!如果我确实想保留空格作为字段之间的分隔符,并且只想基于点(.)拆分单个列,该怎么办?自答问题:在gawk手册中查找
split
:@user3684042 glenn是正确的,但使用已更正的示例输入/输出更新您的问题,以向我们展示您的意思。如果我确实想保留空格作为字段之间的分隔符,并且只想基于点(.)拆分单个列,该怎么办?自答问题:在gawk手册中查找
split
:@user3684042 glenn是正确的,但使用已更正的示例输入/输出更新您的问题,以向我们展示您的意思。如果我确实想保留空格作为字段之间的分隔符,并且只想基于点(.)拆分单个列,该怎么办?自答问题:在gawk手册中查找
split
:@user3684042 glenn是正确的,但使用已更正的示例输入/输出更新您的问题,以向我们展示您的意思。如果我确实想保留空格作为字段之间的分隔符,并且只想基于点(.)拆分单个列,该怎么办?自答问题:在gawk手册中查找
split
:@user3684042 glenn是正确的,但请使用已更正的示例输入/输出更新您的问题,以向我们展示您的意思。
$ awk -F'[".]' '{print $3}' file
1
2
3333
777