"uid="パターンを1文字以上に1回以上変更したいと思います。だから私は次のコマンドを使います。
sed s/uid=.+/uid=something/g file
しかし、これはうまくいきません。 「1文字の後に1回以上」が正しくないようです。.+
理由をご存知ですか?
答え1
BSDsed
または最新バージョンの GNU および busybox の場合、sed
次のものを使用できます。
sed -E 's/uid=.+/uid=something/'
単一文字を複数回一致させます。
有効な-E
フラグsed
拡張正規表現。それがなければ得るでしょう基本正規表現。 2 つの正規表現構文セットは基本的に同じですが、若干異なる構文を使用し、拡張セットはより多くの演算子をサポートします。
これは置き換えられます
uid=110
そして
uid=something
似合いたい場合同じBSD用以外の文字sed
:
sed -E 's/uid=(.)\1*/uid=something/'
これは置き換えられます
uid=110
そして
uid=something0
標準EREには逆参照はありません。 GNUはsed
それを拡張としてサポートしていますが、BSDはサポートしていませんsed
。ただし、逆参照は標準BREの機能なので、次のことができます。
sed 's/uid=\(.\)\1*/uid=something/'
持ち歩ける。
答え2
sed 's/uid=..*/uid=something/g' file
または:
sed 's/uid=.\{1,\}/uid=something/g' file
posix sedの場合