파일에서 특정 줄 삭제

파일에서 특정 줄 삭제

내 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

관련 정보