使用 bash 脚本提取数字

使用 bash 脚本提取数字

我有一个文本文件,其中包含我要提取的信息:

PATTERN 1
bla bla bla.. XYSS$40$$$3 bla bla...    
bla bla bla..
bla bla bla.. GNDC$3$$$23 bla bla bla..

我想提取XYSS$40$$$3并乘以 40 x 3 并将结果与​​行号一起显示在屏幕上。

对于 也一样GNDC$3$$$23

PATTERN2
bla bla bla.. KKKK$4$60 bla bla bla..
bla bla bla..
bla bla bla.. PPPP$10$3 bla bla bla..

我想提取KKKK$4$60并乘以 4 x 60 并将结果与​​行号一起显示在屏幕上。

答案1

如果您使用的是 Linux,那么您可能有 Perl,所以

$ cat input1 
PATTERN 1
bla bla bla.. XYSS$40$$$3 bla bla...    
bla bla bla..
bla bla bla.. GNDC$3$$$23 bla bla bla..

$ perl -ne 'while (/[A-Z]{4}\$+(\d+)\$+(\d+)/g) { 
    printf "line %3d: $1 * $2 = %d\n", $., $1*$2; }' < input1
line   2: 40 * 3 = 120
line   4: 3 * 23 = 69

正则表达式模式匹配四个大写字母 ( [A-Z]{4}),然后是一些美元符号 ( \$+),最后是数字 ( (\d+)),然后再次是美元和数字。括号捕获 和 的数字$1$2$.包含当前行号。改变printf口味。

答案2

使用gawk

gawk 'match($0, /[A-Z]{4}\$+([0-9]+)\$+([0-9]+)/, nums) { 
   print "Line number: "NR", result: "nums[1]*nums[2] 
}' file

相关内容