8

次のパターンに一致する正規表現を作成する必要があります。

fltr_desc_name

つまり、「fltr」の後にアンダースコアが続き、その後にアンダースコアで区切られた任意の数の単語が続きます。

例:次のように一致する正規表現が必要です:

fltr_desc_name
fltr_nameone_nametwo
fltr_level_name_desc

そして、私は「awk」の「if」ステートメント内でそれを使用しています。

awk '/Transformation/ { if ($4=="Filter" && $5=="fltr_*") print $4,$5 }' filename  

正規表現の記述を手伝ってください。また、「awk」コマンド内の「if」条件内で正規表現を使用する方法を教えてください。ありがとうございました。

4

6 に答える 6

23

~/ /awkの正規表現を照合するには、チルダ文字を使用する必要があります。

if ($5 ~ /fltr_*/)
于 2015-12-15T18:51:10.697 に答える
8
awk '/Transformation/ && $4=="Filter" && $5~/^fltr_[[:alpha:]_]+/ { print $4,$5 }' filename
于 2013-01-08T13:46:26.447 に答える
7

あなたが使うことができます

awk '/Transformation/ && $4=="Filter" && match($5, /^fltr_[A-Za-z_]+/) { print $4,$5 }' filename

ステートメントを使用する必要はありませんif。上記のように複数の一致条件を使用できます。match正規表現の一致位置を、で返します^fltr_[A-Za-z_]+$5存在しない場合は0を返します。0はfalseと評価され、その他はtrueと評価されます。

于 2013-01-08T10:46:30.497 に答える
1

fltr_[a-zA-Z_]+[a-zA-Z]

または、文字列の開始から文字列の終了までのみ一致させたい場合:

^fltr_[a-zA-Z_]+[a-zA-Z]$

于 2013-01-08T10:38:38.433 に答える
0

これを試して

^fltr[_\d\w]+$

それはすべてかかります、あなたは必要です。

于 2013-01-08T10:43:23.947 に答える
0

あなたはただ使うことができますfltr_\w+

正規表現を作成およびテストするための優れたプログラムが必要な場合。これを試してください:http://gskinner.com/RegExr/

于 2013-01-08T10:39:32.483 に答える