쉼표로 구분된 CSV 파일에서 "H"로 시작하는 전체 줄을 삭제하는 방법

쉼표로 구분된 CSV 파일에서 "H"로 시작하는 전체 줄을 삭제하는 방법

다음 예에서는 쉼표로 구분된 csv 파일에서 "H"로 시작하는 전체 행을 삭제하는 방법을 보여줍니다.

H,NYR,257,10,11,000, TESTING,055,000,2023-05-10
D,NYR,257,10,11,000, TESTING,055,000,2023-05-10
H,NYR,257,10,11,000, TESTING,055,000,2023-05-10
F,NYR,257,10,11,000, TESTING,055,000,2023-05-10
H,NYR,257,10,11,000, TESTING,055,000,2023-05-10
D,NYR,257,10,11,000, TESTING,055,000,2023-05-10
H,NYR,257,10,11,000, TESTING,055,000,2023-05-10
D,NYR,257,10,11,000, TESTING,055,000,2023-05-10

답변1

이는 sed또는 가 필요하지 않습니다 awk. grep -v '^H'필요한 경우 출력을 다른 파일로 리디렉션하거나 다른 프로그램으로 파이프하는 것은 매우 간단합니다 .

파일을 제자리에서 편집해야 하는 경우 sed -i또는 grep&를 사용할 수 있습니다. sponge예를 들어

sed -i -n '/^H/!p' file.csv

또는

sed -i '/^H/d' file.csv

또는

grep -v '^H' file.csv | sponge file.csv

개인적으로 저는 일반적으로 내부 편집을 사용하지 않고, 디스크 공간이 풍부하고 저렴하기 때문에 별도의 파일을 사용하는 것을 선호하지만, 한 번 삭제된 정보는 복구할 수 없습니다.


전체 파일을 처리해야 하는 경우 awk스크립트 상단에 다음과 같은 규칙을 추가하면 됩니다.

/^H/ { next };

"H"로 시작하는 모든 줄을 건너뜁니다. 다른 모든 줄은 평소와 같이 후속 awk 규칙에 의해 처리됩니다.

마찬가지로, next if /^H/;Perl 스크립트에서 "H"로 시작하는 줄을 건너뛰는 데 사용할 수 있습니다.

관련 정보