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$$$340 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$604 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

관련 정보