抽出したい情報を含むテキストファイルがあります。
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
正規表現パターンは、4つの大文字([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