`awk` 명령을 사용하여 열 범위를 인쇄하는 방법

How Print Range Columns Using Awk Command



`awk` 명령은 Linux에서 테이블 형식 데이터의 열 범위를 인쇄하는 데 사용할 수 있는 많은 명령 중 하나입니다. `awk` 명령은 `awk` 스크립트 파일을 실행하여 터미널에서 직접 사용할 수 있습니다. 이 자습서에서는 테이블 형식 데이터에서 열 범위를 인쇄하는 방법을 보여줍니다.

예 1: 명령 출력에서 ​​열 범위 인쇄

다음 명령은 명령 출력에서 ​​두 번째, 세 번째 및 네 번째 열을 인쇄합니다. '엘 - 엘 '. 여기에서 열 번호가 명시적으로 명시되어 있지만 다음 예에서는 동일한 열 범위를 인쇄하기 위한 보다 효율적인 명령을 보여줍니다.







$ -NS | 어이쿠 '{ $2, $3, $4 인쇄 }'

위의 명령에 의해 다음 출력이 생성됩니다.





예 2: 다음을 사용하여 파일의 열 범위 인쇄 ~을위한 고리

이 예제와 이 튜토리얼의 다른 예제를 따라 하려면 다음과 같은 텍스트 파일을 만드십시오. 마크.txt 다음 내용으로 :

아이디 CSE203 CSE102 CSE202
1109 78 87 79
1167 67 81 70
1190 56 61 69
1156 89 55 78
199 54 66 58

다음 `awk` 명령은 mark.txt의 처음 세 열을 인쇄합니다. NS ~을위한 루프는 열 값을 인쇄하는 데 사용되며 루프에는 세 단계가 포함됩니다. NS NF 변수는 파일의 필드 또는 열의 총 수를 나타냅니다.

$고양이마크.txt
$어이쿠 '{for(i=1;i<=NF-1;i++) printf $i' '; print ''}'마크.txt

명령을 실행하면 다음 출력이 생성됩니다. 출력은 학생을 보여줍니다 아이디 에 대한 표시 CSE203 그리고 CSE102 .

예 3: 시작 및 종료 변수를 정의하여 열 범위 인쇄

다음 `awk` 명령은 다음을 초기화하여 명령 출력 'ls -l'의 처음 세 열을 인쇄합니다. 시작 그리고 종결 변수. 여기서 의 값은 시작 변수는 1이고 값은 종결 변수는 3입니다. 이러한 변수는 for 루프에서 반복되어 열 값을 인쇄합니다.

$ -NS | 어이쿠 ' 시작 { 처음 = 1; 마지막 = 3 }
{ for (i = 첫 번째; 나는

명령을 실행하면 다음 출력이 나타납니다. 출력은 'ls -l' 출력의 처음 세 열 값을 보여줍니다.

예 4: 서식이 있는 파일의 열 범위 인쇄

다음 `awk` 명령은 다음의 처음 세 열을 인쇄합니다. 마크.txt 사용 인쇄 및 출력 필드 구분 기호( OFS ). 여기에서 for 루프는 3단계를 포함하며 3개의 열이 파일에서 순서대로 인쇄됩니다. OFS 여기에서 열 사이에 공백을 추가하는 데 사용됩니다. 루프(i)의 카운터 값이 같을 때 종결 변수를 입력하면 개행( )이 생성됩니다.

$고양이마크.txt
$어이쿠 -V 시작=1 -V = '{ for (i=시작; 나는<=end;i++) printf('%s%s',
$i,(i==종료) ? ' ' : OFS) }'
마크.txt

위의 명령을 실행하면 다음 출력이 생성됩니다.

예 5: 조건문을 사용하여 파일의 열 범위 인쇄

다음 `awk` 명령은 for 루프와 if 문을 사용하여 파일의 첫 번째 열과 마지막 열을 인쇄합니다. 여기서 for 루프에는 4단계가 포함됩니다. NS 시작 그리고 종결 변수는 스크립트에서 if 조건을 사용하여 파일에서 두 번째 및 세 번째 열을 생략하는 데 사용됩니다. OFS 변수는 열 사이에 공백을 추가하는 데 사용되며 ORS 변수는 마지막 열을 인쇄한 후 개행( )을 추가하는 데 사용됩니다.

$고양이마크.txt
$어이쿠 -V 시작=2 -V = '{ (i=1; 나는<=NF;i++)
if( i>=시작 && i<=end) continue;
else printf('%s%s', $i,(i!=NF) ? OFS : ORS) }'
마크.txt

위의 명령을 실행하면 다음 출력이 나타납니다. 출력은marks.txt의 첫 번째 열과 마지막 열을 보여줍니다.

예 6: NF 변수를 사용하여 파일의 열 범위 인쇄

다음 `awk` 명령은 NF 변수를 사용하여 파일의 첫 번째 열과 마지막 열을 인쇄합니다. 열 값을 인쇄하는 데 루프나 조건문이 사용되지 않습니다. NF는 필드 수를 나타냅니다. mark.txt에는 4개의 열이 있습니다. $(NF-3)은 첫 번째 열을 정의하고 $NF는 마지막 열을 나타냅니다.

$고양이마크.txt
$어이쿠 '{$(NF-3) 인쇄' '$NF}'마크.txt

위의 명령을 실행하면 다음 출력이 생성됩니다. 출력은marks.txt의 첫 번째 열과 마지막 열을 보여줍니다.

예 7: substr() 및 index()를 사용하여 파일의 열 범위 인쇄

index() 함수는 두 번째 인수 값이 첫 번째 인수 값에 있는 경우 위치를 반환합니다. substr() 함수는 세 개의 인수를 사용할 수 있습니다. 첫 번째 인수는 문자열 값이고 두 번째 인수는 시작 위치이며 세 번째 인수는 길이입니다. substr()의 세 번째 인수는 다음 명령에서 생략됩니다. 열은 `awk` 명령에서 $1부터 시작하므로 index() 함수는 $3을 반환하고 명령은 $3에서 $4까지 인쇄합니다.

$고양이마크.txt
$어이쿠 '{인쇄 substr($0,index($0,$3))}'마크.txt

위의 명령을 실행하면 다음 출력이 생성됩니다.

예 8: printf를 사용하여 파일에서 열 범위를 순차적으로 인쇄

다음 `awk` 명령은 10자를 위한 충분한 공간을 설정하여 mark.txt의 첫 번째, 두 번째, 세 번째 열을 인쇄합니다.

$고양이마크.txt
$어이쿠 '//{printf '%10s %10s %10s ',$1,$3,$2}'마크.txt

위의 명령을 실행하면 다음 출력이 생성됩니다.

결론

명령 출력 또는 파일에서 열 범위를 인쇄하는 다양한 방법이 있습니다. 이 튜토리얼에서는 `awk` 명령이 Linux 사용자가 표 형식 데이터에서 콘텐츠를 인쇄하는 데 어떻게 도움이 되는지 보여줍니다.