我正在尝试从一个制表符分隔的文件中提取一个我需要存储在变量中的数字。我正在使用一个正则表达式来解决这个问题,这要归功于我能够构建的一些在线研究。
文件组成如下:
0 0 2500 5000
1 5000 7500 10000
2 10000 12500 15000
3 15000 17500 20000
4 20000 22500 25000
5 25000 27500 30000
我需要在给定第一列的数字的情况下提取第二列中的数字。我在线编写并测试了正则表达式:
(?<=5\t).*?(?=\t)
我需要第六行的 25000。
我开始使用 sed,但如您所知,即使使用 -E
选项启用正则表达式的扩展版本,它也不喜欢后视和先行模式.我也尝试过使用 awk 和 grep,但由于类似的原因失败了。
进一步我发现 perl 可能是正确的命令,但我无法使其正常工作。我正在尝试使用命令
perl -pe '/(?<=5\t).*?(?=\t)/' | INFO.out
但我承认我知识匮乏,我有点迷茫。
下一步是从变量中读取正则表达式中的“5”,所以如果您已经知道可能出现的问题,请告诉我。
最佳答案
无需后视——在空格上拆分每一行并检查第一个字段是否为 5
。
在 Perl 中有一个方便的命令行选项,-a
,每一行都会为我们拆分,我们得到带有字段的@F
数组
perl -lanE'say $F[1] if $F[0] == 5' data.txt
请注意,这测试了 5
的数值 (==
)
关于perl - 如何使正则表达式与 perl 命令一起使用并从文件中提取数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70018480/