2개의 awk 문자열이 포함된 쉘 스크립트가 있습니다.
first_awk='
BEGIN {
}
{
# create some array here..
}
END{
}
'
second_awk='
BEGIN {
}
{
## Access the array created in first awk section.
}
END{
}
'
위와 비슷한 일을 할 수 있습니까? 이후 awk 섹션의 첫 번째 awk 섹션에서 생성된 액세스 배열?
또는 둘러싸는 쉘 스크립트에서 배열을 선언하고 awk 문자열의 배열에 액세스할 수 있습니까?
답변1
awk 코드의 일부를 쉘 변수에 할당한 다음 변수를 결합하여 awk에 대한 단일 호출을 제공하는 프로그램을 생성하면 한 변수에서 생성된 배열에 다른 변수에서 액세스할 수 있습니다. 그러나 awk에 대한 별도의 호출을 위해 별도의 awk 프로그램을 만드는 것처럼 보입니다. 이 경우 하나의 awk에 전달된 코드는 다른 awk에 전달된 코드(배열 선언 포함)를 알 수 없습니다.
답변2
노력하면 그럴 것 같아요.
awk -f first_awk -f second_awk ...
awk 파일은 호출된 순서에 따라 "병합"됩니다. first_awk
from 에서 변수/배열 정의를 사용할 수 있습니다 second_awk
.
그러나 시도하면
awk -f first_awk ...
/bin/ls
awk -f second_awk ...
second_awk
first_awk 호출 중에 사용된 변수/배열을 알 수 있는 방법이 없습니다.
각 awk 호출은 실행이 끝나면 삭제되는 새로운 프로세스를 생성합니다.