次のようなファイルがあるとしましょう:
xxxx aa whatever
yyyy bb whatever
zzzz aa whatever
次の内容を含む2つのファイルに分割します。
最初:
xxxx aa whatever
zzzz aa whatever
二番目:
yyyy bb whatever
つまり行のいくつかの値に基づいて行をグループ化します(ルールは次のとおりです:スペースで区切られた2番目の単語)。ただし、グループ内の行を並べ替えないでください。
もちろん、それを行うためのプログラムを書くことはできますが、このようなことができる準備ができているツールがあるかどうか疑問に思っています。
申し訳ありませんが、私はそれを想定していなかったため、言及しませんでした。かなり明白-さまざまな「単語」の数は膨大です。それらのうち少なくとも10000について話している。つまり事前の単語の列挙に基づく解決策は機能しません。
また、マルチパススプリットはあまり好きではありません。問題のファイルは通常かなり大きくなります。
回答:
回答№1は6次の名前のファイルが作成されます output.aa
, output.bb
等:
awk "{print >> "output." $2}" input.file
回答№2の場合は1
そうですね、grepを実行して一致する行を取得し、grep -vを実行して一致しない行を取得することができます。
うーん、できるよ sort -f" " -s -k 2,2
、しかしそれはO(n log n)です。