awk: 마지막 N 열을 인쇄합니다. 여기서 N은 변수를 통해 전달됩니다.

awk: 마지막 N 열을 인쇄합니다. 여기서 N은 변수를 통해 전달됩니다.

내 입력 변수에 $dirPath디렉터리 경로가 포함되어 있습니다. 작업은 N변수를 통해 전달된 디렉터리 경로의 마지막 N 값을 검색할 수 있도록 하는 것입니다 $depth. 고정된 N값(예: 2)의 경우 다음과 같이 달성할 수 있습니다.

subDir=$(echo $dirPath|awk -F "/" '{n= 2; for (--n; n >= 0; n--){ printf "%s/", $(NF-n)} print ""}')

그러나 위 명령의 2를 as 변수로 바꾸려고 하면 n=$depth변수 subDir가 비어 있습니다. 그렇다면 위 명령에 변수 값을 어떻게 전달합니까?

답변1

bash변수 를 전달하려면 awkawk의 인수를 사용하면 됩니다 -v.

awk -v n=$depth -F "/"...

답변2

을 사용하고 있으므로 bash외부 도구가 필요하지 않습니다.awk

#read path constituents into array arr
IFS=/ read -ra arr <<<"$dirPath"
n=2
#print the last two
(IFS=/; printf '%s\n' "${arr[*]:(-n)}")

관련 정보