![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijFLW4-U91H7i-FFK1ctnErNSKCX2xLbpomnm4Vv4O8ch-uwRDU1QM5qiYIzMHbYv9yVced_QscQW9IPVz1Jh5Q2wn-h7rkkDd_gGEtjKW6FDaRPKGtfCHaRBKAXO4k3xS5rIxcg-iODvho8-pKn4v9f1FaYfY7o6vcH1v8p6gd3dFdfBka9H9xGoi/s1600-rw/command-87198_1280.jpg)
WEBサーバーで、大量のログファイルや、ユーザーフォルダなどを設置していた際に、コマンド操作で、複数のディレクトリ間の内部ファイルの差分を出す時、diffを使って行うのもいいが、今回の案件は以下のような作業だった
作業内容
とあるサービスのユーザーディレクトリの一覧を精査するという内容だが、異なるサーバー(2台)間で、同じサービスのシステムが入っていて、そのうち、重複するユーザーアカウント(フォルダ名)を抽出せよ!
考え方
手順1
各サーバーのユーザーフォルダ内の一覧を取得し、ファイルに書き出す
# サーバー1)
$ ls > user_list_1.txt
# サーバー2)
$ ls > user_list_2.txt
手順2
そのファイルのフォルダ名をコマンドラインで重複行を抽出する
$ sort -mb user_list_1.txt user_list_2.txt | uniq -d
結果1
なんかエラーが出て止まった・・・orz
$ sort: string comparison failed: Illegal byte sequence
$ sort: Set LC_ALL='C' to work around the problem.
$ sort: The strings compared were `L\201fecole' and `lifecard'.
調査
調べたところ、Macシステムにはおまじないがいるらしく、このエラーが出る場合は以下のように書けばいいらしい。
$ LC_ALL=C sort -mb user_list_1.txt user_list_2.txt |LC_ALL=C uniq -d
結論
少し面倒くさいが、ゴールに辿りつけた。
お疲れ様でした。オレ!
0 件のコメント:
コメントを投稿