A maneira mais fácil é usar o comando grep -v
:
grep -v "Products below" your_file.csv > new_file.csv
Em algum lugar no meio do meu arquivo CSV está esta linha:
Products below this line are out of stockNumber, month, year, reference, store
Observação: número, mês, ano, referência e loja são os campos CSV.
Como eu excluo esta linha do arquivo usando um comando de linha de comando?
Observe que o CSV é assim
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
Com seus dados de entrada, você pode tentar:
$ 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
Usando sed -i.bak
para editar o arquivo no local e criar um arquivo de backup:
sed -i.bak '/^Products/d' file
Se pudermos supor com segurança que você deseja excluir todas as linhas que começam com Products
(incluindo o espaço após a primeira palavra), todas elas funcionarão:
awk
awk '$1!="Products" file > newfile
perl
perl -ne 'print unless /^Products/' file > newfile
ou
perl -ane 'print if $F[0]!="Products"' file > newfile
ou, para editar o arquivo no lugar
perl -i -ne 'print unless /^Products/; ' file
perl -i -ane 'print if $F[0]!="Products"' file
grep (esta é apenas uma versão mais curta da resposta do svq )
grep -v ^Products file > newfile
bash (apenas por diversão)
while read line; do [[ $line =~ ^Products ]] || echo $line; done < file > newfile
no local com ed
(no prompt bash
)
ed -s file <<<$'/Products below/d\nw'
Ou como don crissti recomenda:
ed -s file <<<$'/Products below/d\nw\nq'
Você pode usar sed
no padrão de pesquisa para excluir cada linha que contém esse padrão
sed -i '/Products below this line are out of stockNumber, month, year, reference, store/d' file
perl oneliner:
perl -ne 'print unless (m/Products below/') FILE
Aqui está outro exemplo de uso de sed
:
sed '/^Products below this line are out of stockNumber, month, year, reference, store$/d' originalDocument > newDocument
Tags text-processing