Awk 내장 변수 사용 방법 배우기-10 부


이 시리즈의이 부분에서는 Awk 기능의 섹션을 살펴보면서 Awk의 내장 변수 개념을 살펴 보겠습니다. "Awk에서 사용할 수있는 두 가지 유형의 변수가 있습니다. "8 부에서 다룬 사용자 정의 변수와 내장 변수.

기본 제공 변수에는 Awk에 이미 정의 된 값이 있지만 이러한 값을 신중하게 변경할 수도 있습니다. 기본 제공 변수에는 다음이 포함됩니다.

  1. FILENAME : current input file name( do not change variable name)
  2. FR : number of the current input line (that is input line 1, 2, 3… so on, do not change variable name)
  3. NF : number of fields in current input line (do not change variable name)
  4. OFS : output field separator
  5. FS : input field separator
  6. ORS : output record separator
  7. RS : input record separator

위의 Awk 내장 변수 사용을 설명해 보겠습니다.

현재 입력 파일의 파일 이름을 읽으려면 다음과 같이 FILENAME 기본 제공 변수를 사용할 수 있습니다.

$ awk ' { print FILENAME } ' ~/domains.txt 

FILENAME 내장 변수를 사용할 때 Awk의 기본 동작 인 각 입력 행에 대해 파일 이름이 인쇄된다는 것을 알 수 있습니다.

NR 을 사용하여 입력 파일의 줄 (레코드) 수를 계산합니다. 아래 예에서 볼 수 있듯이 빈 줄도 계산합니다.

cat 명령을 사용하여 domains.txt 파일을 보면 텍스트가있는 14 줄과 비어있는 2 줄이 포함됩니다.

$ cat ~/domains.txt
$ awk ' END { print "Number of records in file is: ", NR } ' ~/domains.txt 

레코드 또는 라인의 필드 수를 계산하기 위해 다음과 같이 NR 내장 변수를 사용합니다.

$ cat ~/names.txt
$ awk '{ print "Record:",NR,"has",NF,"fields" ; }' ~/names.txt

다음으로, FS 내장 변수를 사용하여 입력 필드 구분 기호를 지정할 수도 있습니다. Awk가 입력 행을 필드로 나누는 방법을 정의합니다.

FS 의 기본값은 공백과 탭이지만 FS 의 값을 Awk에게 그에 따라 입력 줄을 나누도록 지시하는 모든 문자로 변경할 수 있습니다.

이를 수행하는 두 가지 방법이 있습니다.

  1. one method is to use the FS built-in variable
  2. and the second is to invoke the -F Awk option

Linux 시스템의/etc/passwd 파일을 고려하십시오.이 파일의 필드는 : 문자를 사용하여 구분되므로 특정 필드를 필터링 할 때 새 입력 필드 구분 기호로 지정할 수 있습니다. "다음 예에서와 같이 :

다음과 같이 -F 옵션을 사용할 수 있습니다.

$ awk -F':' '{ print $1, $4 ;}' /etc/passwd

선택적으로 아래와 같이 FS 내장 변수를 활용할 수도 있습니다.

$ awk ' BEGIN {  FS=“:” ; }  { print $1, $4  ; } ' /etc/passwd

출력 필드 구분자를 지정하려면 OFS 내장 변수를 사용합니다. 아래 예에서와 같이 사용하는 문자를 사용하여 출력 필드를 구분하는 방법을 정의합니다.

$ awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd

이 10 부에서는 미리 정의 된 값과 함께 제공되는 Awk 내장 변수를 사용하는 아이디어를 살펴 보았습니다. 그러나 우리는 또한 이러한 값을 변경할 수 있지만 적절한 이해와 함께 수행중인 작업을 알지 못하는 경우 변경하지 않는 것이 좋습니다.

그런 다음 Awk 명령 작업에서 쉘 변수를 사용하는 방법을 다루기 때문에 Tecmint에 계속 연결되어 있습니다.