Awk 변수, 숫자 표현식 및 대입 연산자를 사용하는 방법 알아보기 - 8부
Awk 명령 시리즈는 점점 흥미로워지고 있습니다. 이전 7개 부분에서는 Linux에서 기본 텍스트 또는 문자열 필터링을 수행할 수 있도록 마스터해야 하는 Awk의 몇 가지 기본 사항을 살펴보았습니다.
이 부분부터 시작하여 더 복잡한 텍스트 또는 문자열 필터링 작업을 처리하기 위해 Awk의 고급 영역을 살펴보겠습니다. 따라서 변수, 숫자 표현식 및 대입 연산자와 같은 Awk 기능을 다루겠습니다.
이러한 개념은 쉘, C, Python 및 기타 여러 프로그래밍 언어 이전에 많은 프로그래밍 언어에서 접했을 수 있는 개념과 포괄적으로 다르지 않으므로 이 주제에 대해 크게 걱정할 필요가 없습니다. 이러한 언급된 기능.
이것은 아마도 이해하기 가장 쉬운 Awk 명령 섹션 중 하나일 것이므로 편안히 앉아 시작해 보세요.
1. Awk 변수
모든 프로그래밍 언어에서 변수는 값을 저장하는 자리 표시자입니다. 프로그램 파일에 변수를 생성하면 파일이 실행될 때 변수에 대해 지정한 값을 저장할 일부 공간이 메모리에 생성됩니다.
다음과 같이 셸 변수를 정의하는 것과 같은 방식으로 Awk 변수를 정의할 수 있습니다.
variable_name=value
위 구문에서:
variable_name
: 변수에 부여하는 이름입니다.값
: 변수에 저장된 값
아래에서 몇 가지 예를 살펴보겠습니다.
computer_name=”linux-console.net”
port_no=”22”
email=”[email ”
server=”computer_name”
위의 간단한 예를 살펴보면 첫 번째 변수 정의에서 linux-console.net
값이 computer_name
변수에 할당됩니다.
또한 22
값은 port_no
변수에 할당됩니다. 값을 할당한 마지막 예에서와 같이 한 변수의 값을 다른 변수에 할당할 수도 있습니다. 변수 서버에 대한 computer_name
의
기억하실지 모르겠지만, 이 Awk 시리즈의 2부에서 필드 편집을 다루었는데, Awk가 입력 라인을 필드로 나누고 표준 필드 액세스 연산자인 $
를 사용하여 다른 필드를 읽는 방법에 대해 이야기했습니다. 분석되었습니다. 변수를 사용하여 다음과 같이 필드 값을 저장할 수도 있습니다.
first_name=$2
second_name=$3
위의 예에서 first_name
값은 두 번째 필드로 설정되고 second_name
은 세 번째 필드로 설정됩니다.
예를 들어 이름과 성, 성별을 나타내는 애플리케이션 사용자 목록이 포함된 names.txt
라는 파일을 생각해 보세요. cat 명령을 사용하면 다음과 같이 파일 내용을 볼 수 있습니다.
cat names.txt
그런 다음 Awk를 실행하는 것처럼 first_name
및 second_name
변수를 사용하여 목록에 있는 첫 번째 사용자의 이름과 두 번째 이름을 저장할 수도 있습니다. > 아래 명령:
awk '/Aaron/{ first_name=$2 ; second_name=$3 ; print first_name, second_name ; }' names.txt
터미널에서 uname -a
명령을 실행하면 모든 시스템 정보가 인쇄되는 또 다른 사례도 살펴보겠습니다.
두 번째 필드에는 호스트 이름
이 포함되어 있으므로 호스트 이름을 호스트 이름
이라는 변수에 저장하고 Awk를 사용하여 인쇄할 수 있습니다. > 다음과 같습니다.
uname -a
uname -a | awk '{hostname=$2 ; print hostname ; }'
2. 수치식
Awk에서 숫자 표현식은 다음 숫자 연산자를 사용하여 작성됩니다.
*
: 곱셈 연산자+
: 덧셈 연산자/
: 나누기 연산자-
: 빼기 연산자%
: 모듈러스 연산자^
: 지수 연산자
숫자 표현식의 구문은 다음과 같습니다.
operand1 operator operand2
위 형식에서 operand1
및 operand2
는 숫자 또는 변수 이름일 수 있으며 operator
는 위의 연산자 중 하나입니다.
다음은 숫자 표현식을 작성하는 방법을 보여주는 몇 가지 예입니다.
counter=0
num1=5
num2=10
num3=num2-num1
counter=counter+1
Awk에서 숫자 표현의 사용을 이해하기 위해 Tecmint가 소유한 모든 도메인을 포함하는 domains.txt
파일과 함께 아래의 예를 고려해 보겠습니다. 강하다>.
news.linux-console.net
linux-console.net
linuxsay.com
windows.linux-console.net
linux-console.net
news.linux-console.net
linux-console.net
linuxsay.com
linux-console.net
news.linux-console.net
linux-console.net
linuxsay.com
windows.linux-console.net
linux-console.net
파일 내용을 보려면 아래 명령을 사용하십시오.
cat domains.txt
linux-console.net
도메인이 파일에 나타나는 횟수를 계산하려면 다음과 같이 간단한 스크립트를 작성할 수 있습니다.
#!/bin/bash
for file in $@; do
if [ -f $file ] ; then
#print out filename
echo "File is: $file"
#print a number incrementally for every line containing linux-console.net
awk '/^linux-console.net/ { counter=counter+1 ; printf "%s\n", counter ; }' $file
else
#print error info incase input is not a file
echo "$file is not a file, please specify a file." >&2 && exit 1
fi
done
#terminate script with exit code 0 in case of successful execution
exit 0
스크립트를 생성한 후 저장하고 실행 가능하게 만듭니다. domains.txt
파일을 출력 입력으로 사용하여 실행하면 다음과 같은 출력을 얻습니다.
./script.sh ~/domains.txt
스크립트 출력에는 linux-console.net
이 포함된 domains.txt
파일에 6개의 줄이 있어 이를 수동으로 계산할 수 있음을 확인할 수 있습니다.
3. 할당 연산자
우리가 다룰 마지막 Awk 기능은 할당 연산자입니다. Awk에는 여러 할당 연산자가 있으며 여기에는 다음이 포함됩니다.
*=
: 곱셈 할당 연산자+=
: 덧셈 할당 연산자/=
: 나누기 할당 연산자-=
: 빼기 할당 연산자%=
: 모듈러스 할당 연산자^=
: 지수 할당 연산자
Awk에서 할당 작업의 가장 간단한 구문은 다음과 같습니다.
variable_name=variable_name operator operand
예:
counter=0
counter=counter+1
num=20
num=num-1
위의 할당 연산자를 사용하여 Awk에서 할당 작업을 단축할 수 있습니다. 이전 예를 고려하면 다음 형식으로 할당을 수행할 수 있습니다.
variable_name operator=operand
counter=0
counter+=1
num=20
num-=1
따라서 +=
할당 연산자를 사용하여 위에서 작성한 쉘 스크립트에서 Awk 명령을 다음과 같이 변경할 수 있습니다.
#!/bin/bash
for file in $@; do
if [ -f $file ] ; then
#print out filename
echo "File is: $file"
#print a number incrementally for every line containing linux-console.net
awk '/^linux-console.net/ { counter+=1 ; printf "%s\n", counter ; }' $file
else
#print error info incase input is not a file
echo "$file is not a file, please specify a file." >&2 && exit 1
fi
done
#terminate script with exit code 0 in case of successful execution
exit 0
Awk 시리즈의 이 부분에서는 몇 가지 강력한 Awk 기능, 즉 변수, 숫자 표현식 작성 및 할당 연산자 사용과 이를 실제로 사용하는 방법에 대한 몇 가지 그림을 다루었습니다.
이러한 개념은 다른 프로그래밍 언어의 개념과 전혀 다르지 않지만 Awk 프로그래밍에는 몇 가지 중요한 차이점이 있을 수 있습니다.
파트 9에서는 특별한 패턴인 BEGIN
및 END
인 Awk 기능을 더 살펴보겠습니다. 그때까지 Tecmint와 연결을 유지하세요.