Linuxのコマンドラインツールを使用して、ファイルから重複した行を効率的に削除する方法を解説します。具体的なコード例とその詳細な解説、さらに応用例を通じて、この技術を日常のタスクに活用する方法を探ります。
目次
基本的な方法: uniqコマンド
Linuxには`uniq`という便利なコマンドが標準で含まれており、このコマンドを使うことでファイルの重複行を簡単に削除できます。
sort sample.txt | uniq > output.txt # sample.txtの重複行を削除してoutput.txtに保存
このコマンドは、`sort`でファイルを並び替え、`uniq`で重複行を削除しています。
高度な方法: awkコマンド
もう少し高度な操作を行いたい場合、`awk`コマンドを使うことで、より柔軟に重複行の削除が可能です。
awk '!a[$0]++' sample.txt > output.txt # sample.txtの重複行を削除してoutput.txtに保存
このコマンドは、各行を配列のキーとして使用し、その行が初めて出現した場合のみ出力します。
応用例1: 特定の列の重複を削除
CSVファイルやTSVファイルのように、特定の列に基づいて重複行を削除することもできます。
awk -F'\t' '!a[$2]++' sample.tsv > output.tsv # 2列目の重複を削除
応用例2: 重複行のカウント
重複行の数を知りたい場合は、以下のように`uniq`コマンドの`-c`オプションを使用します。
sort sample.txt | uniq -c # 重複数とともに行を表示
応用例3: 重複している行のみを抽出
重複している行のみを表示するには、`uniq`コマンドの`-d`オプションを使用します。
sort sample.txt | uniq -d # 重複している行のみを表示
応用例4: 重複行の削除と保存
重複行を削除した結果を元のファイルに上書き保存するには、以下のように行います。
awk '!a[$0]++' sample.txt > temp.txt && mv temp.txt sample.txt # 重複行を削除して元のファイルに上書き保存
まとめ
Linuxのコマンドラインツールを使用することで、ファイルからの重複行削除が非常に簡単になります。基本的な`uniq`コマンドから、高度な`awk`コマンドを使った方法まで、さまざまなケースに対応できるテクニックを学ぶことができました。これらのコマンドをマスターすることで、日常の作業の効率化やデータのクリーニング作業をスムーズに行うことができるようになります。
コメント