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으로 인쇄합니다.