Awk検索 - 同じ文字列の文字クラスを組み合わせる

Awk検索 - 同じ文字列の文字クラスを組み合わせる

おやすみなさい、

複数の文字クラスを同時に使用しようとしましたが、成功しませんでした。 HTTPトラフィックURIを含む列がある場合は、REGEXのURIフィールドに6〜10文字のテキスト文字列(数字を含む)を含む行を識別したいと思います。そして小文字...それぞれ1つ以上ですが、大文字は使用できません。

この検索は特定の文字や文字列の一部に限定されません。

テスト文字列:

aasd4567
9f7g6s5df
0hjksdf73
123456789
12345/1234a
Wordswords
W0rdsW4rds
aasd4/567af
9f7g6s5dfasdf
0hjks/asdf
12345/1234asd
Wordswords12
W0rdsW4rds12312312

かっこで囲まれたブールを使用できることを願っています。つまり:

awk --re-interval '$1 ~ /([0-9]+&[a-z]+){6,10}/'

しかし、これはうまくいきません。明らかに、それらを組み合わせることも効果がありません。なぜなら

awk --re-interval '$1 ~ /[a-z0-9]{6,10}/'

それでも数字と小文字のない文字列を返します。

私は[[:lower:]]と[[:digit:]]を組み合わせる方法を見つけようとしましたが、上記の最初の例と同じ問題に直面しました。

私はこれが非常に簡単な修正であると確信しています。私は何を見逃していますか?私は仕事に最も効率的なツールであるgawk / grep / sed / etcを使用することに反対するつもりはありません。

ありがとう

ベストアンサー1

あなたの質問を正しく理解したら、最初に一致する文字列を抽出し、数字と文字matchがあることを確認してください。RSTARTRLENGTH

awk  --re-interval '{match($1, /[[:lower:][:digit:]]{6,10}/); 
  x=substr($1, RSTART, RLENGTH)}; x ~ /[[:lower:]]/ && x ~ /[[:digit:]]/' test_strings

テスト文字列が与えられると、次のものが生成されます。

aasd4567
9f7g6s5df
0hjksdf73
9f7g6s5dfasdf
12345/1234asd
Wordswords12
W0rdsW4rds12312312

おすすめ記事