문자열을 grep하지만 첫 번째 줄은 포함하지 않습니다.

문자열을 grep하지만 첫 번째 줄은 포함하지 않습니다.

첫 번째 줄을 읽지 않고 특정 문자열에 대해 찾은 줄을 삭제하는 grep -v 명령을 원합니다.

주문 ID, 타임스탬프 변경, 조건, 상태
OD10,2017-04-25 07:21:13.069,A,D
OD11,2017-04-25 07:21:13.069,A,D
주문 ID, 타임스탬프 변경, 조건, 상태
OD14,2017-04-26 07:21:13.069,A,D
OD15,2017-04-26 07:21:13.069,A,D
주문 ID, 타임스탬프 변경, 조건, 상태
OD16,2017-04-27 07:21:13.069,A,D
OD17,2017-04-27 07:21:13.069,A,D

예상하다:

주문 ID, 타임스탬프 변경, 조건, 상태
OD10,2017-04-25 07:21:13.069,A,D
OD11,2017-04-25 07:21:13.069,A,D
OD14,2017-04-26 07:21:13.069,A,D
OD15,2017-04-26 07:21:13.069,A,D
OD16,2017-04-27 07:21:13.069,A,D
OD17,2017-04-27 07:21:13.069,A,D

원본 파일을 건드리지 않고 다른 파일로 출력해야 합니다.

답변1

$ awk 'NR==1 {print; next;} !/orderID/' input.txt > output.txt

더 짧은 구문:

$ awk 'NR==1 || !/orderID/' input.txt > output.txt

답변2

셸에서 파일을 복합 명령으로 리디렉션할 수 있습니다. 여기서 첫 번째 줄을 읽고 인쇄한 다음 나머지 스트림에서 해당 텍스트를 제외합니다.

{ read -r header; echo "$header"; grep -Fv "$header"; } < file

이 방법을 사용하면 헤더를 제외하기 위해 헤더의 내용을 알 필요가 없습니다.

이에 상응하는 awk는 다음과 같습니다.

awk 'NR==1 {header = $0; print} $0 == header {next} {print}' file

관련 정보