読者です 読者をやめる 読者になる 読者になる

唯物是真 @Scaled_Wurm

プログラミング(主にPython2.7)とか機械学習とか

制御文字をgrepする

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])'
-->