이것은 본질적으로 원하는 명령입니다. 쉘 명령을 사용하는 제 3 열에 특별한 것을 인쇄하려고한다는 것을 제외하고는 모두 작동합니다 (또는 더 많은 awk 명령을 추측하지만 나는 이것을 원래의 awk 문에 어떻게 넣을 지 모른다.) 내가 도움이 필요한 것은 print 명령문에서 $ 2와 ar [$ 4, $ 1] 사이의 유사 명령 대체이지만 나머지는 특수성을 위해 남겨 둡니다.awk 스크립트 내에서 awk 명령에 액세스해야하는 쉘 명령 사용
awk 'NR==FNR{ar[$3,$2]=$1+ar[$3,$2]; }
NR>FNR && ar[$4,$1] {print "hs"$1,$2,`awk '$1 == #$1 from outer awk command# file2 | tail -n 1 | awk '{print $3}'`, ar[$4,$1]}' file1 file2
파일 1은
8 4520 7400 5
7 10610 16789 15
7 14647 16789 3
감사합니다 - 당신과 같아야합니다
8 4520 5560 t11
8 5560 6610 t12
8 6610 7400 t13
7 9350 10610 t11
7 10610 11770 t12
7 11770 14627 t13
7 14627 16789 t14
그리고 출력 모양을
5 8 t11
15 7 t12
3 7 t14
파일 2처럼 보일 것입니다!
당신은이 잘못에 대해 생각하고 있습니다. awk는 텍스트를 조작하는 도구입니다. 도구를 호출하는 환경이 아닙니다 (다른 awk 인스턴스 포함) - 이것이 쉘입니다. 우리가 당신을 도울 수 있도록 당신이 당신의 의견을 어떻게해야한다고 생각하는지 (**와는 대조적으로) 귀하의 의견을 당신의 의견에 어떻게 기술하고 싶은지 설명하십시오. –
'ar [$ 4, $ 1]'이 샘플 출력의 마지막 열의 값을 반환하는 방법을 알지 못합니다. 그 문제에 관해서, 나는 입력에서 '5'와 '15'의 값을 생성 할 수있는 것을 보지 못한다. 따라서 EdM이 말했듯이 데이터 처리 방법에 대한 규칙을 볼 수 있습니다. 거의 확실하게 awk에서 필요한 결과를 얻거나 쉘 코드를 리팩토링하고 awk를 호출하는 방법을 사용할 수 있습니다. ** Q **를 업데이트하십시오. 행운을 빕니다. – shellter
@shelter, '5'와 '15'는 _file1_에서 온 것입니다. – agc