다음과 같은 질문이 있습니다.
다음과 같은 이름을 가진 파일이 많이 있습니다: 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