調べ物した結果

現役SEが仕事と直接関係ないことを調べた結果とか感想とか

nkfした後のgrepが意味わからんすぎてムシャムシャして食べた

linux環境でsjisファイルにgrep(日本語)検索しようとして全く謎挙動だったから食べた。
食べられなかった。

<コマンドだけほしい用>
単発式

# ファイルの文字コードを合わせる場合
nkf -Sw sample.sjis | grep "あああ"
nkf -[入力オプション][出力オプション] [対象ファイル] | grep [検索文字]
# 検索文字の文字コードを合わせる場合
grep `echo "あああ" | nkf -Ws` sample.sjis

find活用grep

find ./ -type f | xargs -I {} nkf -Sw {} | grep -n "漢字"

入力オプションにファイルの文字コード、出力コードにgrepに使われる検索をつかう。
つまずきポイント
・入力と出力の両方のオプションがある。ここの指定をミスってるとうまく行かない。
grep文字コードがシステムに依存している。らしい。echo $LANGで使ってる文字コードを調べる。
・findでのパイプ経由がくせもの

grep -a `echo "あああ" | nkf -Ws` sample.sjis

これでもいい。入力のguess(デフォルト)を信じないところが重要だとおもっている。
わかってるなら指定しておいたほうが無難。

find ./ -type f | nkf -Sw | grep -n "漢字"

これはうごかない。findの結果を渡してしまうのでファイルとしてではなくて単純に文字列としてnkfしてるっぽい。

やってみたけどよくわかりません。よくわかりませんがnkfにIN/OUTのオプションがあるのがわかったので、良しとします。

<参考にさせていただきました>
atmarkit.itmedia.co.jp
sysfrontier.com
qiita.com