gitで管理しているリポジトリのファイルに間違って、改行やタブ以外の変な制御文字が入っていたことがあったのでgit grepでチェックした
bashとかは$''
で囲んだ中に16進数の表記を書くと展開してくれるらしいので以下のように書ける(-I
はバイナリファイル以外を対象にしたいのでつけているので、普通のgrepならいらない。改行文字\n
は元からgrepでは引っかからないような気がするが一応除いておく)
git grep -I $'[\x01-\x08\x0B\x0C\x0E-\x1F\x7F]'
Perlの正規表現が使えるのなら否定後読み(先読みでもよい)を使って以下のように書ける
こちらのほうがあとから見て意味はわかりやすそう
git grep -IP '[[:cntrl:]](?<![\n\r\t])'