从文件中提取以某个序列开头的所有行,然后将其输出到另一个文件

从文件中提取以某个序列开头的所有行,然后将其输出到另一个文件

我有一个 .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

相关内容