J'ai un file .csv avec des contenus similaires à ceci:
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
Je veux saisir toutes les lignes qui commencent par BIHAR
, puis le sortir vers un autre file csv séparé. Comment je fais ça?
J'ai essayé d'utiliser la fonction "Find All" de sublime, puis j'utilise la flèche vers la fin de la ligne pour les mettre en surbrillance. Malheureusement, certaines lignes sont beaucoup plus longues que les autres, donc ça ne fonctionne pas. Il y a environ 100'000 lignes dans le file .txt.
J'ai aussi essayé avec sed:
sed -n 'BIHAR /myfile.txt' /newfile.txt
EDIT: Pour une raison ou une autre, grep / sed / awk ignore les returns à la fin de chaque ligne, et par conséquent, il essaie uniquement de faire correspondre la première ligne et rien d'autre.
Essayez ceci avec GNU sed:
sed -n '/^BIHAR/p' file > new_file
ou avec grep:
grep '^BIHAR' file > new_file
ou avec awk:
awk '/^BIHAR/' file > new_file
grep
grep ^BIHAR file > new_file
awk
awk '/^BIHAR/' file > new_file
pedagogique awk
awk -F, '$1 == "BIHAR" { print $0 ;} file > new_file
edit: lorsque vous utilisez le file venant de Windows World, assurez-vous d'utiliser dos2unix pour convertir la fin de ligne
dos2unix dosfile > unixfile