awk 조건 및 헤더

awk 조건 및 헤더

employee.txt사용할 수 있는 다음과 같은 더미 파일이 있습니다 awk.

100  Thomas  Manager    Sales       $5,000
200  Jason   Developer  Technology  $5,500
300  Sanjay  Sysadmin   Technology  $7,000
400  Nisha   Manager    Marketing   $9,500
500  Randy   DBA        Technology  $6,000

$1>를 사용하여 모든 직원을 인쇄하려고 할 때 200다음 명령을 사용하여 인쇄할 수 있습니다.

cat employees.txt | awk '$1 > 200'

그러나 이제 다음과 같이 위의 조건과 함께 사용자 정의 헤더를 추가하려고 합니다.

cat employees.txt | awk '
BEGIN{print "ID|Name|Designation|Department|Salary";OFS="|"}
{print $1 > 200}
END{print"------------------------"}'

위의 코드는 작동하지 않는 것 같습니다.

답변1

에서 awk"body"에는 다음 구문이 있어야 합니다.

condition{command}

condition만족 되면 command현재 행이 완료됩니다. 다음과 같을 수도 있습니다:

{command}

...이 없으면 condition실행됩니다.모든철사. 이것은 또한 작동합니다:

condition

...그렇지 않다면 command그냥 awk인쇄하세요. $0만족스러우면 전체 라인을 인쇄하세요.condition


당신은 awk다음과 같아야합니다 :

awk 'BEGIN{print "ID|Name|Designation|Department|Salary";OFS="|"} 
  $1>200{$1=$1;print} END{print"------------------------"}' file

알아채다 $1=$1. 이는 출력 필드 구분 기호만 변경하기 때문에 필요합니다. 따라서 필드를 하나씩 인쇄 $1,$2,...하거나( ) 강제로 레코드를 다시 작성 해야 합니다 $n=$n.

답변2

다음 중 하나를 사용하세요.

 BEGIN { ... }
 $1 > 200
 END { .. }

또는

 BEGIN { ... }
 $1 > 200 { print ;}
 END { .. }

사용한 지시문은 첫 번째 필드($1)를 모두 "filename" 200으로 인쇄합니다.

관련 정보