Bashの正規表現から文字列を生成する

Bashの正規表現から文字列を生成する

Bashで正規表現として提供される文字列を生成してパイプする方法別のコマンドで

たとえば、

> $RANDOM | regex "{abcdef\d}[8]" | grep "1{3}" | less

ベースにできるユーティリティが見つかりませんでした。正規表現特殊

正規表現が入力されます。正規表現に基づいて文字列を生成するユーティリティを探したいです。

たとえば、

$ regex "{abcdef\d}[8]" -n 10
b8789a62
97303666
8b536c28
79590607
6d80ad60
78d36ded
aa001d9a
8826f276
df1e1f7a
854307db

2つの制限事項:

  1. 反復演算子が指定されたテキストを生成することが許可される回数は、一部の内部(見えない)数によって制限されます。
  2. 生成される文字列の数は、ユーザーが指定した数によって制限されます。

ベストアンサー1

各行に8つの小文字の16進数を含む行ストリームを取得するには、次のようにします。

tr -c -d '0-9a-f' </dev/random | fold -w 8

これは/dev/random興味のない文字を読み取って削除しますtrfold次に、ストリームを8つの文字行に切り捨てるために使用されます。

tr別の文字セットを選択するには、選択式を変更してください。foldより長いまたは短い文字列を取得するには、長さを変更します。grep生成された文字列から他の基準を満たす文字列を選択するには、パイプラインにステップを追加します(たとえば、grep 1113つの連続許可のみを使用)1

おすすめ記事