これを行うための「簡単な」方法が必要ですが、それが何であるかわかりません。
次の形式(md5の後にファイル名がオーム)の行を含むプレーンテキスト「file.txt」があるとします。
5ee434a2ebcf4c3c98ee07e9c1efddc0 foo.txt
365a6d8b18cab348d92db610dfc46264 bar.txt
ae42d992bf622bdc425d37b04ec9c2d5 mini.txt
b8e9ff5502d5dbe38b3fd5e3363caacf tyrion.txt
5ee434a2ebcf4c3c98ee07e9c1efddc0 imac.txt
542ed609dfc4d0cae44c4b7be6d66382 mba.txt
310ee92ebc69ed79c1837fc53983b7f8 mini luoma.txt
542ed609dfc4d0cae44c4b7be6d66382 tyrion final.txt
ソートして出力したいですfile.txt
。
- md5 sumがファイルが重複していることを示す場合にのみ行を表示
- 重複した各「グループ」の間に空白行を置きます。
したがって、次のようになります。
542ed609dfc4d0cae44c4b7be6d66382 mba.txt
542ed609dfc4d0cae44c4b7be6d66382 tyrion final.txt
5ee434a2ebcf4c3c98ee07e9c1efddc0 foo.txt
5ee434a2ebcf4c3c98ee07e9c1efddc0 imac.txt
(実際には2個または10個以上が重複することがあります。)
ruby
この問題を解決できる専門家や専門家があると思いますpython
が、私はほとんどすべての実用的な解決策に開いています。
ベストアンサー1
$ sort file.txt \
| grep -f <(cut -d' ' -f1 file.txt | sort | uniq -d) \
| awk 'last && last != $1 { printf "\n" }; { last=$1 ; print}'
542ed609dfc4d0cae44c4b7be6d66382 mba.txt
542ed609dfc4d0cae44c4b7be6d66382 tyrion final.txt
5ee434a2ebcf4c3c98ee07e9c1efddc0 foo.txt
5ee434a2ebcf4c3c98ee07e9c1efddc0 imac.txt
(awkの提案をいただいた「cas」に感謝します。)
(バグを発見してくれた「steeldriver」に感謝します。)