sed が一致するテキストを置き換えます。

sed が一致するテキストを置き換えます。

を使用してawkフィールドに入力しますが、FieldSeperator()が行を開始するのか、前にスペースがあるのか​​、前にスペースがないのかによって異なります。$1 $2awk$match

私はこれがsedこの特定の仕事のための最良の選択だと思いますが、助けが必要です。簡単な検索で得られるようで、行全体を変更する例をたくさん見ましたが、以下で何をすべきかわかりませんでした。誰でも私を助けることができればとても感謝します。

$match私が探している一致()に設定された変数()を指定したいと思いますpassword=。これは実際にさまざまなパターンを繰り返すバッチスクリプトに含まれています。

印刷したい:

  • 一致する行のみが含まれます。一致しない行を無視します。
  • 行の最初の一致値まで印刷します。
  • 一致する値がある場合は、次のように置き換えます。masked
  • 一致するものの後に何もない場合は、その行をそのまま印刷します(またはに置き換えますempty)。
  • 大文字と小文字を区別せずに一致するものを検索します。

ファイル.txt 入力

dummy line  
mypassword=123  
PASSWORD=1234  
secret password=2345  2ndpassword=99485  
password=  
nothing to see move along
end of file

希望の出力

mypassword=masked  
PASSWORD=masked  
secret password=masked  
password= 

ベストアンサー1

どうですか?

$ sed -nE '/(password|PASSWORD)=/{s/=.+/=masked/;p;}' infile.txt
mypassword=masked
PASSWORD=masked
secret password=masked
password=
  • 一致password=するPASSWORD=
  • 交換後に空でない文字シーケンス=
  • 結果の印刷

GNU sedを使用すると、修飾子を使用して大文字と小文字を区別しない一致を単純化できますI

sed -nE '/password=/I{s/=.+/=masked/;p;}' infile.txt

おすすめ記事