웹사이트 검색

Awk가 셸 변수를 사용하도록 허용하는 방법 - 11부


쉘 스크립트를 작성할 때 일반적으로 Awk 작업과 같은 다른 작은 프로그램이나 명령을 스크립트에 포함합니다. Awk의 경우 쉘에서 Awk 작업으로 일부 값을 전달하는 방법을 찾아야 합니다.

이는 Awk 명령 내에서 쉘 변수를 사용하여 수행할 수 있으며, 시리즈의 이 부분에서는 Awk 명령에 전달하려는 값을 포함할 수 있는 쉘 변수를 Awk에서 사용하도록 허용하는 방법을 배울 것입니다.

Awk가 쉘 변수를 사용하도록 활성화하는 방법에는 두 가지가 있습니다:

1. 쉘 인용 사용

Awk 명령에서 쉘 변수의 값을 대체하기 위해 실제로 쉘 인용을 사용하는 방법을 설명하기 위해 예제를 살펴보겠습니다. 이 예에서는 /etc/passwd 파일에서 username을 검색하고 사용자의 계정 정보를 필터링하고 인쇄하려고 합니다.

따라서 다음 내용으로 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 }'

"/$username/ " – Awk 명령에서 쉘 변수 username의 값을 대체하는 데 사용되는 쉘 인용입니다. username 값은 /etc/passwd 파일에서 검색할 패턴입니다.

큰따옴표는 Awk 스크립트 '{ print $0 }' 외부에 있습니다.

그런 다음 스크립트를 실행 가능하게 만들고 다음과 같이 실행하십시오.

chmod  +x  test.sh
./text.sh 

스크립트를 실행하면 사용자 이름을 입력하라는 메시지가 표시됩니다. 유효한 사용자 이름을 입력하고 Enter를 누르세요. 아래와 같이 /etc/passwd 파일에서 사용자 계정 세부정보를 볼 수 있습니다.

2. Awk의 변수 할당 사용

이 방법은 위의 방법에 비해 훨씬 간단하고 더 좋습니다. 위의 예를 고려하면 간단한 명령을 실행하여 작업을 수행할 수 있습니다. 이 방법에서는 -v 옵션을 사용하여 쉘 변수를 Awk 변수에 할당합니다.

먼저 쉘 변수 username을 생성하고 /etc/passswd 파일에서 검색하려는 이름을 할당합니다.

username="aaronkilik"

그런 다음 아래 명령을 입력하고 Enter를 누르십시오.

cat /etc/passwd | awk -v name="$username" ' $0 ~ name {print $0}'

위 명령에 대한 설명:

  1. -v – 변수 선언을 위한 Awk 옵션
  2. username – 쉘 변수입니다.
  3. name – Awk 변수입니다.

Awk 스크립트 ' $0 ~ name {print $0}' 내부의 $0 ~ name을 주의 깊게 살펴보겠습니다. 이 시리즈의 4부에서 Awk 비교 연산자를 다룰 때 비교 연산자 중 하나가 value ~ 패턴이라는 것을 기억하세요. 즉, 값이 패턴과 일치하면 true입니다.

Awk에 파이프된 cat 명령의 output($0)/etc/passwd(aaronkilik) 패턴과 일치합니다. > 결과적으로 비교 연산이 true가 됩니다. 그러면 사용자의 계정 정보가 포함된 줄이 화면에 인쇄됩니다.

결론

우리는 Awk 명령 내에서 쉘 변수를 사용하는 데 도움이 될 수 있는 Awk 기능의 중요한 섹션을 다루었습니다. 많은 경우 쉘 스크립트 내에서 작은 Awk 프로그램이나 명령을 작성하게 되므로 Awk 명령 내에서 쉘 변수를 사용하는 방법을 명확하게 이해해야 합니다.

Awk 시리즈의 다음 부분에서는 Awk 기능의 또 다른 중요한 섹션, 즉 흐름 제어 문을 살펴보겠습니다. 그러니 계속 지켜봐 주시고 계속해서 배우고 공유합시다.