Awk가 셸 변수를 사용하도록 허용하는 방법-11 부
쉘 스크립트를 작성할 때 일반적으로 스크립트에 Awk 작업과 같은 다른 작은 프로그램이나 명령을 포함합니다. Awk의 경우 쉘에서 Awk 작업으로 값을 전달하는 방법을 찾아야합니다.
이것은 Awk 명령 내에서 쉘 변수를 사용하여 수행 할 수 있으며,이 시리즈의이 부분에서는 Awk 명령에 전달하려는 값을 포함 할 수있는 쉘 변수를 Awk가 사용하도록 허용하는 방법을 배웁니다.
Awk가 쉘 변수를 사용하도록 할 수있는 두 가지 방법이 있습니다.
1. 쉘 인용 사용
Awk 명령에서 쉘 변수의 값을 대체하기 위해 실제로 쉘 인용을 사용하는 방법을 설명하는 예제를 살펴 보겠습니다. 이 예에서는/etc/passwd 파일에서 사용자 이름을 검색하고 사용자의 계정 정보를 필터링하고 인쇄하려고합니다.
따라서 다음 내용으로 test.sh
스크립트를 작성할 수 있습니다.
#!/bin/bash #read user input read -p "Please enter username:" username #search for username in /etc/passwd file and print details on the screen cat /etc/passwd | awk "/$username/ "' { print $0 }'
그런 다음 파일을 저장하고 종료하십시오.
위의 test.sh
스크립트에서 Awk 명령의 해석 :
cat /etc/passwd | awk "/$username/ "' { print $0 }'
<코드> //
큰 따옴표는 Awk 스크립트, ‘{print sh}’
외부에 있습니다.
그런 다음 스크립트를 실행 가능하게 만들고 다음과 같이 실행하십시오.
$ chmod +x test.sh $ ./text.sh
스크립트를 실행하면 사용자 이름을 입력하고 유효한 사용자 이름을 입력 한 다음 Enter 키를 누르라는 메시지가 표시됩니다. "다음과 같이/etc/passwd 파일에서 사용자의 계정 세부 정보를 볼 수 있습니다.

2. Awk의 변수 할당 사용
이 방법은 위의 방법 1에 비해 훨씬 간단하고 좋습니다. 위의 예를 고려하면 간단한 명령을 실행하여 작업을 수행 할 수 있습니다. 이 방법에서는 -v
옵션을 사용하여 Awk 변수에 쉘 변수를 할당합니다.
먼저 셸 변수 username
을 만들고 /etc/passswd
파일에서 검색하려는 이름을 할당합니다.
username="aaronkilik"
그런 다음 아래 명령을 입력하고 Enter를 누르십시오.
# cat /etc/passwd | awk -v name="$username" ' $0 ~ name {print $0}'

위 명령에 대한 설명 :
-v
– Awk option to declare a variableusername
– is the shell variablename
– is the Awk variable
Awk 스크립트 'sh ~ name {print sh}'
내부의 sh ~ name
을 자세히 살펴 보겠습니다. 이 시리즈의 Part 4에서 Awk 비교 연산자를 다뤘을 때 비교 연산자 중 하나는 ~
패턴이었습니다. 즉, 값이 패턴과 일치하면 참을 의미합니다.
Awk로 파이프 된 cat 명령의 output (sh)
은/etc/passwd에서 검색하는 이름 인 (aaronkilik)
패턴과 일치합니다. "비교 연산이 참입니다. "그러면 사용자의 계정 정보가 포함 된 줄이 화면에 인쇄됩니다.
결론
Awk 명령 내에서 쉘 변수를 사용하는 데 도움이 될 수있는 Awk 기능의 중요한 섹션을 다루었습니다. 여러 번 작은 Awk 프로그램이나 명령을 쉘 스크립트에 작성하므로 Awk 명령에서 쉘 변수를 사용하는 방법을 명확하게 이해해야합니다.
Awk 시리즈의 다음 부분에서는 Awk 기능의 또 다른 중요한 섹션 인 흐름 제어 문을 살펴 보겠습니다. 그러니 계속 관심을 갖고 계속 배우고 공유합시다.