추출하려는 정보가 포함된 텍스트 파일이 있습니다.
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