2

以下の出力があります。

Profile: id=standard,ou=groups,ou=access,ou=data,o=abc,c=au
Password: 3412783561b897b8979878c9789798d89789789
 d49a5e3b8ff353844454
id: account 1 0

Passwordフィールドを次のものに置き換えたいPassword: *******

どうすれsedばこれを行うことができますか? 最初の文字列を置き換えることはできますが、次の文字列が残ります。

sed 's/Password: .*/Password: ********/g'
4

4 に答える 4

2
sed -e '/^Password:/,/^[^ ]/{s/Password: .*/Password: */; /^ /d;}'

これは、Password:空白以外で始まる行と次の行の間の行を探し、中括弧の間のコマンドをそれらの行に適用します。行については、質問が求めているようにPassword:、入力を次のように置き換えます。Password: *必要に応じて、より複雑な置換を行うことができます。もう 1 つのコマンドは、空白で始まる行 (パスワードの継続行) を削除します。範囲の終了行は変更されません。

$ sed -e '/^Password:/,/^[^ ]/{s/Password: .*/Password: */; /^ /d;}' <<'EOF'
> Profile: id=standard,ou=groups,ou=access,ou=data,o=abc,c=au
> Password: 3412783561b897b8979878c9789798d89789789
>  d49a5e3b8ff353844454
> id: account 1 0
> EOF
Profile: id=standard,ou=groups,ou=access,ou=data,o=abc,c=au
Password: *
id: account 1 0
$

これは、Solaris を使用するかなりのチャンスだと思いますsed。うまくいかない場合は、アクションを複数の行に分割します。

sed -e '/^Password:/,/^[^ ]/{
        s/Password: .*/Password: */
        /^ /d
        }' ...

それは間違いなくうまくいくはずです。

于 2013-06-20T04:59:42.743 に答える