파일에서 패턴 및 파일 이름 추출

파일에서 패턴 및 파일 이름 추출

다음과 같은 질문이 있습니다.

다음과 같은 이름을 가진 파일이 많이 있습니다: mfifm-slab-l1=XX-l2=YY-scf.out. 은 1부터 27까지의 숫자 XX입니다 . YY파일에서 원하는 정보를 추출하고 다음과 같이 파일 이름과 함께 인쇄할 수 있습니다(이와 같은 다양한 줄을 상상해 보세요).

.
.
.
mfifm-slab-l1=3-l2=17-scf.out     !    total energy              =   -7460.95083408 Ry
.
.
.

내 질문은: 파일 이름에서 XX ​​및 YY 부분만 추출하고 다음과 같이 수행할 수 있습니까?

.
.
.
3    17     !    total energy              =   -7460.95083408 Ry
.
.
.

답변1

원래 입력 파일은 귀하의 질문에 존재하지 않지만 귀하가 제공한 awk 스크립트에서 나온 것입니다.댓글에서:

awk '/!/{print FILENAME,"   ",$0}' *.out

당신이 말하는 것은 질문의 입력을 생성하는 것입니다. 이것이 원래 입력 파일에서 직접 질문의 최종 예상 출력을 생성할 것이라고 생각합니다.

awk 'FNR==1{split(FILENAME,f,/[-=]/)} /!/{print f[4], f[6],"   ",$0}' *.out

다음은 더 명확하고 이해하기 쉽게 작성된 두 번째 스크립트입니다.

awk '
    FNR==1 {
        split(FILENAME,f,/[-=]/)
    }
    /!/ {
        print f[4], f[6], "   ", $0
    }
' *.out

관련 정보