내 CSV 파일 중간에 다음 줄이 있습니다.
Products below this line are out of stockNumber, month, year, reference, store
참고: 숫자, 월, 연도, 참조 번호 및 매장은 CSV 필드입니다.
명령줄 명령을 사용하여 파일에서 이 줄을 어떻게 제거할 수 있습니까?
CSV는 다음과 같습니다.
Number, month, year, reference, store
1,1,2014,13322,main
2,2,2014,13322,main
3,3,2011,1322,main
4,4,2012,3322,main
5,4,2013,122,secondary
Products below this line are out of stockNumber, month, year, reference, store
12,411,2010,122,Albany
25,41,2009,122,Dallas
35,24,2008,122,New
답변1
가장 쉬운 방법은 grep -v
다음 명령을 사용하는 것입니다.
grep -v "Products below" your_file.csv > new_file.csv
답변2
입력 데이터에 따라 다음을 시도해 볼 수 있습니다.
$ sed '/^Products/d' file
Number, month, year, reference, store
1,1,2014,13322,main
2,2,2014,13322,main
3,3,2011,1322,main
4,4,2012,3322,main
5,4,2013,122,secondary
12,411,2010,122,Albany
25,41,2009,122,Dallas
35,24,2008,122,New
sed -i.bak
현재 위치에서 파일을 편집하고 백업 파일을 생성 하려면 :
sed -i.bak '/^Products/d' file
답변3
첫 번째 단어 뒤의 공백을 포함하여 시작하는 모든 줄을 제거한다고 안전하게 가정할 수 있는 경우 Products
다음이 작동합니다.
앗
awk '$1!="Products" file > newfile
진주
perl -ne 'print unless /^Products/' file > newfile
또는
perl -ane 'print if $F[0]!="Products"' file > newfile
또는 해당 위치에서 파일을 편집하십시오.
perl -i -ne 'print unless /^Products/; ' file perl -i -ane 'print if $F[0]!="Products"' file
grep (이것은 더 짧은 버전입니다.svq의 답변)
grep -v ^Products file > newfile
bash (그냥 재미로)
while read line; do [[ $line =~ ^Products ]] || echo $line; done < file > newfile
답변4
sed
검색 패턴을 사용하여 해당 패턴이 포함된 모든 줄을 삭제할 수 있습니다.
sed -i '/Products below this line are out of stockNumber, month, year, reference, store/d' file