ファイル内の制御文字を見つけるには?

ファイル内の制御文字を見つけるには?

私のファイルにどの制御文字があるのか​​知りたいです。特定の文字を検索するものではありませんが、可能で\tあるか\n。私には、次の内容を知らせるプログラムがありますInvalid control character。しかし、ファイルを開くと何も見えません。このキャラクターをどのように表現しますか?スペースを追加する文字が\n疑われます。\t

私は試しましたが、grep '\n' myfile.txt出力にn文字が表示されました。

ベストアンサー1

特定の文字を探す

grepまた、sed制御文字のバックスラッシュ表記はサポートされていません。 (sed正規表現はバックスラッシュを使用します。逆参照.) 使用中の場合bash それバックスラッシュシーケンスは、次の(または任意の)プログラムに渡される前に実際の制御文字に変換できます。

$ grep $'\t' file
$ sed -n /$'\t'/p file
$ # or change to l (ell) to visibly show the control character(s)
$ sed -n /$'\t'/l file

OTOHawkこの表記は実際に移植可能にサポートされています。

$ awk '/\t/' file

制御文字の検索

grep補完文字クラス/範囲をすべて検索でき、sed次を含む行を探します。どの「印刷可能」(グラフィックまたはスペース) ASCII 文字以外の文字です。 (ファイルの行を区切る改行は考慮されません。存在する行なので、この一致は満たされません。ただし、Windowsまたはtelnet/SMTP/etcスタイルCRLFを含むファイルがある場合は、CR〜するすべての行が一致するため、この手法の使いやすさが低下します。 )

 $ export LANG=C # use an ASCII or at least single-byte locale; this is the simplest one
 $ grep '[^ -~]' file
 $ sed -n '/[^ -~]/p' file
 $ # or better (see below)
 $ sed -n '/[^ -~]/l' file 

到着展示する制御文字に加えて、ファイル全体または選択した行にどのような他の制御文字がありますか?SHAwardenが提供するオプション以下も使用できます。

 $ sed -n l [file] # that's ell not one; can merge into the selection as above
 $ cat -vT [file]
 $ # both read stdin if not given a filename 
 $ # and thus can be piped from a selection command above

これらのディスプレイのいくつかは、少なくともバックスラッシュ表記法を使用する。一部文字(\t=tab、\b=backspace)を使用し、他の人は「カラット」(古代では「上向き矢印」)表記法(^I=tab、^H=backspace)を使用します。これはASCII図を参照し、カラット/上矢印は16進数40(8進数100と同じ)を減算または加算することを意味します。

おすすめ記事