我有一个 .csv 文件,其内容与此类似:
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
我想抓取所有以 开头的行BIHAR
,然后将其输出到另一个单独的 csv 文件。我怎么做?
我尝试使用 sublime 的“查找全部”功能,然后使用右箭头指向行尾以突出显示它们,但不幸的是,有些行比其他行长得多,所以它不起作用。.txt 文件中大约有 100,000 行。
我也尝试过使用 sed:
sed -n 'BIHAR /myfile.txt' /newfile.txt
编辑:由于某种原因 grep/sed/awk 忽略每行末尾的换行符,因此它只尝试匹配第一行而没有其他内容,我该如何解决这个问题?
答案1
使用 GNU sed 试试这个:
sed -n '/^BIHAR/p' file > new_file
或使用 grep:
grep '^BIHAR' file > new_file
或使用 awk:
awk '/^BIHAR/' file > new_file
答案2
格列普的
grep ^BIHAR file > new_file
awk 的
awk '/^BIHAR/' file > new_file
迂腐的 awk 的
awk -F, '$1 == "BIHAR" { print $0 ;} file > new_file
编辑:当使用来自 Windows 世界的文件时,请务必使用 dos2unix 转换行尾
dos2unix dosfile > unixfile