Tente isso com o GNU sed:
sed -n '/^BIHAR/p' file > new_file
ou com o grep:
grep '^BIHAR' file > new_file
ou com o awk:
awk '/^BIHAR/' file > new_file
Eu tenho um arquivo .csv com conteúdo semelhante a este:
BIHAR,PURNIA,DAGARUA,BELGACHHI,BELGACHHI,KARBOLA TOLA,0,0,312,0,0,312,Fully Covered,NO,NO,01_04_2010,241656,312,2123,910,1811.5
BIHAR,PURNIA,SRINAGAR,THARI,THARI,ARBANNA,0,0,312,0,0,312,Fully Covered,NO,NO,01_04_2010,244374,312,2123,910,1811.5
BIHAR,PURNIA,RUPAULI,DHOBGIDHA-RUPAULI,DHOBHGIDHA-RUPAULI-II,MATELI,0,0,312,0,0,312,Fully Covered,NO,NO,01_04_2010,243748,312,2123,910,1811.5
ETCETC,PURNIA,KRITYANAND NAGAR,CHUNAPUR,BANBHAG,BANGALI TOLA KOSHI KINARA,0,0,312,0,0,312,Fully Covered,NO,NO,01_04_2010,242663,312,2123,910,1811.5
Eu quero pegar todas as linhas que começam com BIHAR
e, em seguida, enviá-lo para outro arquivo csv separado. Como eu faço isso?
Eu tentei usar o recurso "Localizar tudo" do sublime e, em seguida, use a seta para a direita até o final da linha para realçá-las, mas infelizmente algumas linhas são muito mais longas do que as outras para não funcionar. Existem cerca de 100'000 linhas no arquivo .txt.
Eu também tentei com o sed:
sed -n 'BIHAR /myfile.txt' /newfile.txt
EDIT: Por alguma razão, o grep / sed / awk ignora as novas linhas no final de cada linha e, como resultado, ele tenta apenas corresponder à primeira linha e nada mais, como eu corrijo isso? / strong>
do grep
grep ^BIHAR file > new_file
do awk
awk '/^BIHAR/' file > new_file
pedantes do awk
awk -F, '$1 == "BIHAR" { print $0 ;} file > new_file
edit: ao usar o arquivo vindo do windows world, certifique-se de usar o dos2unix para converter o fim de linha
dos2unix dosfile > unixfile
Tags grep