awk 예제

좋은… awk 예제 .. 이해하기 쉬운 간단한 방법으로 각 예제를 설명했습니다. 그런 다음 “chmod +x”를 실행하고 이 파일을 새 UNIX 명령으로 이스합니다. 파일을 얻으려면 여기를 클릭하십시오 : awk_example1.awk 우리는 우리의 라이브러리 데이터베이스에 중복 된 제목이 있습니다. 중복 된 항목을 찾을 수 있지만 정규식과 일치하는 줄과 동일한 표현식을 사용하는 위의 줄을 인쇄하는 방법을 알 수 없습니다. 각 중복 집합에는 다음과 같은 사이에 공백이 있습니다. 위의 예에서 SERSOL-EBK에 일치 합니다., $1 그리고 $4 각각 이름 및 급여 필드를 나타냅니다. 이 표는 AWK와 NAWK 간의 몇 가지 차이점을 보여 줍니다. 숫자와 문자가 있는 문자열이 정수로 가려지면 AWK는 0을 반환하고 NAWK는 가능한 한 많이 변환합니다. “NAWK?”로 표시된 두 번째 예제는 일부 이전 버전의 NAWK에서 “d”를 반환하고 이후 버전은 “1”을 반환합니다. 내 질문 : 1) 왜 “1”의 첫 번째 줄이 없고 값이 없는가? 그것을 제거하는 방법? 2) 정렬 된 열로 인쇄를 수행하는 방법(예: 정렬 1열, 정렬 2열) 첫 번째 예제는 한 필드를 인쇄하고 두 번째 는 두 개의 필드를 인쇄합니다. 첫 번째 경우 두 위치 매개변수가 함께 연결되고 공백 없이 출력됩니다.

두 번째 경우 AWK는 두 개의 필드를 인쇄하고 출력 필드 구분 기호를 둘 사이에 배치합니다. 일반적으로 이 공간은 공간이지만 변수 “OFS”를 수정하여 변경할 수 있습니다. NAWK에는 난수를 생성할 수 있는 함수가 있습니다. 함수 랜드는 0과 1 사이의 난수를 반환합니다. 다음은 0에서 100 사이의 백만 개의 난수를 계산하고 각 숫자가 사용된 빈도를 계산하는 예제입니다. 그러나 스크립트 나 명령과 함께 사용할 수 있으므로 이전 예제를 마스터해야합니다. 두 번째 방법은 AWK에 특별합니다. 현대 AWK의뿐만 아니라 다른 옵션이 있습니다. comp.unix.shell FAQ를 참조하십시오. 파일 marks.txt에서 세 번째 열에는 제목 이름이 포함되고 네 번째 열에는 특정 제목에서 얻은 마크가 포함됩니다. AWK 인쇄 명령을 사용하여 이 두 열을 인쇄해 보겠습니다. 위의 예에서 $3과 $4는 입력 레코드에서 각각 세 번째 필드와 네 번째 필드를 나타냅니다.

위의 예에서 awk는 필드가 공백이 아닌 줄 바임으로 구분되기 때문에 필드를 제대로 처리하지 못합니다. 이 스크립트를 읽지 않기를 바랍니다. 나는 그것이 그것을 할 수있는 잘못된 방법이라고 말했다. C 프로그래머이고 AWK를 모르는 경우 위와 같은 기술을 사용할 수 있습니다. AWK의 연관 배열을 사용하는 이 예제를 제외하면 동일한 프로그램입니다. 중요한 점은 이 두 버전 간의 크기 차이를 알아두는 것입니다: 위의 예에서 $1은 이름을 나타내고 $NF 급여를 나타냅니다. $NF 마지막 필드를 나타내는 $NF 사용하여 급여를 받을 수 있습니다. 세 번째 제안은 입력이 올바른 형태로 되어 있는지 확인하는 것입니다.

일반적으로 비관적이기 좋은 생각이지만이 예제에서는 간단하지만 충분한 테스트를 추가합니다. 위의 예에서 awk 명령은 `관리자`와 일치하는 모든 줄을 인쇄합니다.