複数の行で構成される巨大な.txtファイルがあり、1行に複数の行を互いに区切る特定の文字列があります。
その文字列を使用して、現在の文字列という名前の複数のファイルに分割したいと思います。
特定の文字列の例:
Found matches in (anything can be here):
巨大な.txtデータの例:
Found matches in (anything can be here):
..............
..............
..............
..............
..............
..............
Found matches in EXAMPLE:
..............
..............
..............
..............
..............
..............
希望の出力:
Found matches in (anything can be here).txt < contains data below its self but before another line stating " Found matches in
Found matches in EXAMPLE.txt < contains data below its self but before another line stating " Found matches in
また、データがある「(ここに何でもあります)」行に重複した一致がある可能性があるため、現在の行を上書きする代わりに(1)、(2)、(3)などの名前を変更できますか?または、単に rename 現在のファイルも追加します(上書きしません)。
答え1
どのくらい行くのでしょうか?
awk '/^ *Found matches/ {FN = $0 ".txt"; next} {print >> FN}' file
わかりますか?
編集する: 修正されたバージョン(「一致するものが見つかりました。」いいえ最初の行に):
awk '/^ *Found matches/ {if (FN) close (FN); FN = $0 ".txt"; next} FN {print >> FN}' file
答え2
正直なところ、私は初めてbashに触れ、どこから始めるべきかさえ知りません。申し訳ありません。これが学習のための場所であることはわかりますが、どんな方向でも役に立ちます。
知らないと謝る必要はありません。スクリプティングを上手に生まれた人はいません。
しかし、現在の問題の場合は、「XとYを解決するスクリプトを作成してください」ほど助けを求めるものではありません。
この(そして他のほとんどの)GNU / Linuxコミュニティは通常、これらの問題に目を向けます。
しかし、当面の質問に戻ります。実際、どこから始めるべきかさえわかりません。数年前、私はこう始めました。
- 私は読んだこのガイド(そしてすべての練習をしました)
- だから私は読んでこのガイド(そしてすべての練習をしました)
- 買ったこの本。ほとんどの練習問題を読んで完了してください。
- コミュニティに参加しました(最初は観察者として)。
私が取った最も重要で有用なステップは使用されるGNU/Linuxすべて。意味:GNU / Linuxは私の唯一のオペレーティングシステムになりました。これは私が直面している問題を解決するために必要なスキルを使用するか、新しいスキルを学ぶことを余儀なくされました*。後者に直面したとき、私はしばしばコミュニティに助けを求めます。コミュニティは私に良い質問をする方法を教えてくれます(願っています!)。
GNU / Linuxの多くの利点の1つは、ライセンスおよび/または高いソフトウェアコストによって妨げられる「食事療法」がないことです。お好みのディストリビューションに合わせて自由に変更できます。このようにしてください、〜するあなたの質問で提起された問題だけでなく、他の多くの問題も解決するのに十分熟練してください。
今私は私の道がすべての人のためではないかもしれないことを十分に知っています。もちろん、自分に最適な学習パスを選択する必要があります。
最後に、このようなことが起こることを心から願っています。いいえ傲慢に聞こえますが、私の意図は正反対です。あなたがもっと興味を持ってGNU / Linuxオタクの世界に深く掘り下げるようにしたいのです。
楽しいハックになろう!
*約10年前、Xorgをハッキングし、GNU/Linuxを使ってオーディオとWiFiを操作するのは簡単ではありませんでした。 (そしてBluetoothを起動しないでください!)