0

このパターン <= を sed の正規表現と一致させるのに問題があります。私が本当に必要としているのは、[<|<=] または型一致のようなものです。.* で動作させることができますが、これにより、行の残りの部分で別の問題が発生することがあります。例の行は次のとおりです。

for (int j = 0 j < nspec ++j)

また

for (int j = jmin j <= jmax ++j)

例として、次の (部分的な) コマンドを示します。

sed -n '/for (int *\([[:graph:]]\) *= *\([[:graph:]]\) *\1 *</p' filename

最初のパターンを見つけますが、

sed -n '/for (int *\([[:graph:]]\) *= *\([[:graph:]]\) *\1 *<=/p' filename

2番目は見つかりません。

どんな助けでも大歓迎です。

4

2 に答える 2

2

文字クラスは1文字のみに一致します。(これは|、代替ではなく、リテラルのパイプ文字として解釈されることを意味します)

次のように置き換える必要があり[]ます()

(<|<=)または代わりに:<=?

于 2012-11-24T17:52:43.637 に答える
1

RegEx?では、前の要素をオプションにします。So<=?は、「持っている場合は、より少なくて等しい」という意味です。

sed でエスケープする必要があるかどうかわからない?ので、両方の方法で試してみてください。わかったらお知らせ/更新してください :-)

于 2012-11-24T17:53:51.320 に答える