Bashでegrep [[:print:]]コマンドの用途は何ですか?

Bashでegrep [[:print:]]コマンドの用途は何ですか?

ファイルを読み取って処理できるシェルスクリプトの拡張機能を開発しています。デフォルトでは、入力ファイルにはヘッダーレコードといくつかの詳細レコードが含まれています。ファイルからヘッダーレコードを取得したいと思います。

$ cat sample_file.txt
header1,header2,header3,header4
value1,value2,value3,value4

既存のスクリプトは、次のコマンドを使用してファイルからヘッダーを取得します。

$ cat sample_file.txt | head -1 | egrep -o '[[:print:]]' |  tr '\n' '\0'
header1,header2,header3,header4$

egrep -o '[[:print:]]'ここで何をすべきかわかりません。命令がなくてもegrepこのように入力できます。

タイトルをそのまま印刷してください。

$ cat sample_file.txt | head -1
header1,header2,header3,header4

または最後に改行なしでタイトルを印刷します。

$ cat sample_file.txt | head -1 |  tr '\n' '\0'
header1,header2,header3,header4$

マニュアルページには次の内容が記載されていますが、いつ使用するかはegrepわかりません。[[:print:]]

最後に、以下のように、特定の名前付き文字クラスが角かっこ式内で事前定義されています。その名前は説明を必要とせず、[:alnum:]、[:alpha:]、[:cntrl:]、[:digit:]、[:graph:]、[:lower:]、[:print:])です。 、[:punct:]、[:space:]、[:upper:]、[:xdigit:]。たとえば、[[:alnum:]] は [0-9A-Za-z] を意味しますが、後者の形式は C ロケールと ASCII 文字エンコーディングによって異なりますが、前者はロケールと文字セットに依存しません。 (これらのクラス名の角かっこは記号名の一部であるため、角かっこのリストを区切る角かっこで含める必要があります。)ほとんどのメタ文字はリストの特別な意味を失います。テキスト]を含めるには、まずリストに入れます。同様に、リテラル^を含めるには、始めを除く任意の場所に配置します。最後にテキストを含めるには、最後に入れます。

egrep '[[:print:]]'オプションの使い方と使用先を理解するのに役立ちますか?

ベストアンサー1

角かっこ式は似て[abc]おり、文字の1つと一致します。たとえば、or[abc]と一致しますが、orと一致しません。角かっこ式内の文字クラスを使用して、角かっこ式に一致するセットにクラス全体を追加できます。コントロール文字、改行、タブを保持しながら、印刷可能な単一の文字と一致します。 、またはより良い方法は、指定されたパターンに一致するすべての行を印刷し、次を使用して一致する部分のみを印刷します。abd:[[:print:]]egrepgrep -E-o1行に1つずつ

たとえば、次を使用すると[:alpha:]コロンは省略されます。

$ echo ab:c | egrep -o '[[:alpha:]]'
a
b
c

したがって、実際にegrep -o '[[:print:]]'入力から印刷可能なすべての文字は、1行に1つずつ印刷されます。次に、tr '\n' '\0'改行文字をNULバイトに変更して、その間にNULを含むすべての印刷可能文字を取得します。 NUL は制御文字よりも扱いが容易ではないため、これが意味があるかどうかはわかりません。lessたとえば、またはで結果データを開くと、NULがカラーでvim印刷されていることがわかります。^@

繰り返しますが、cat sample_file.txt | head -1 | tr '\n' '\0'いいえ削除する改行文字は NUL に置き換えられます。


ここで目的が何であるかはわかりませんが、改行文字とタブを削除するには、次のようにしますtr -d

... | tr -d '\n\t'

一致する文字セットを補完(反転)-dするには、印刷できないすべての文字を削除してください。-c

... | tr -dc '[:print:]'

tr正規表現のように外部括弧を使用しないことに注意してください。実際には、toの引数はtr正規表現括弧式の内部部分と同じです。)

おすすめ記事