sed
ラベル内の数字を削除するコマンドは次のとおりです。
sed 's/\(<[^0-9>]*\)[0-9]*\([^0-9]*>\)/\1\2/g'
しかし、特定の文字列を除外する方法を知っている人はいますか?
これで、次のように表示されます。以下を入力してください。
<user1></user1>
<password2></password2>
そして出力:
<user></user>
<password></password>
ただし、パスワード2などの特定の文字列を除外できるようにしたい場合、出力は次のようになります。
<user></user>
<password2></password2>
答え1
ファイルを前処理して、ホワイトリストに追加したい文字列に特殊文字を挿入して、文字列が置き換えられるのを防ぎます。
あなたが変更したように:
<user1></user1>
<password2></password2>
到着
<user1></user1>
<|password2><|/password2>
まずs/\(<[^|0-9>]*\)[0-9]*\([^0-9]*>\)/\1\2/g
交換のため。可能であれば、|
入力にすでに存在する場合は_
-> _u
、|
-> などのスキームを使用してエスケープでき、_p
その後元に戻すことができます。
sed '
s/_/_u/g;s/|/_p/g
s:<\(/\{0,1\}password2>\):<|\1:g
s:<\(/\{0,1\}othertag>\):<|\1:g
s/\(<[^|0-9>]*\)[0-9]*\([^0-9]*>\)/\1\2/g
s/|//g;s/_p/|/g;s/_u/_/g'