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 件のコメント:
コメントを投稿