MacのTarminalでコマンド操作する際に、エラーが出る件

2015年1月28日

Mac コマンド

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

結論

少し面倒くさいが、ゴールに辿りつけた。 お疲れ様でした。オレ!

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。