awk를 사용하여 파일에서 콜론(:) 뒤의 단어를 가져오는 방법

awk를 사용하여 파일에서 콜론(:) 뒤의 단어를 가져오는 방법

쉘 스크립트의 경우 아래와 같이 4개의 매개변수 값이 포함된 줄이 있는 파일에서 사용자 비밀번호를 가져와야 합니다.

*:*:*:test:test

:세 번째와 네 번째 열을 개별적으로 가져와(콜론( ) 제외) 다른 변수에 전달하고 싶습니다 .

답변1

다음과 같은 것을 사용할 수 있습니다.

VARIABLE=$(awk -F\: '{print $4}' input_file)

그러면 네 번째 인수가 이름이 지정된 변수에 할당됩니다.VARIABLE

답변2

사용이 명시적으로 강제되지 않는다고 가정하면 awkBash 기능을 사용하여 외부 프로세스 사용을 피하세요.

IFS=':' read _ _ myCol3 myCol4 _ < myFile

이는 _유효한 변수 이름이지만 드롭 포인트로 자주 사용됩니다. 마지막 항목은 _추가 필드를 가져옵니다.

귀하의 예시 데이터에는 귀하가 말씀하신 대로 4개가 아닌 5개의 값이 있는 것으로 확인되었습니다.

편집: 파일에서 가져온 여러 배열 값을 설정하려면(이 경우 내 passwd 파일의 11번째 줄):

$ myArray+=( $( awk < /etc/passwd '-F:' 'NR == 11 { print $1, $3, $6; }' ) )
$ declare -p myArray
declare -a myArray=([0]="uucp" [1]="10" [2]="/var/spool/uucp")
$ echo "${myArray[1]}"
10

관련 정보