다음 예에서는 쉼표로 구분된 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"로 시작하는 줄을 건너뛰는 데 사용할 수 있습니다.