ファイルから特定のシーケンスで始まるすべての行を抽出し、別のファイルに出力します。

ファイルから特定のシーケンスで始まるすべての行を抽出し、別のファイルに出力します。

次のような内容を含む.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 '/^BIHAR/' file > new_file

賢い愚かさ

 awk -F, '$1 == "BIHAR" { print $0 ;} file > new_file

編集:Windowsの世界のファイルを扱うときは、dos2unixを使用して行末を変換します。

  dos2unix dosfile > unixfile

関連情報