我有一堆日志,我需要定期替換密碼和主機名等敏感資訊。假設所有出現的地方都需要用關鍵字 REMOVED 替換。我無法洗掉它們,因為需要證明資料存在。
使用sed是一種要求。
不幸的是,我遇到了幾個用例的問題:
這里的目標是“密碼”關鍵字和引數(正確的傳遞)。之后的所有內容都應該保持不變(請勿洗掉)。預期有多個“密碼”組合,例如:
password secret123 do-not-delete
password: secret123 do-not-delete
password = secret123 do-not-delete
app_password=secret123 do-not-delete
這里有幾個主機名示例。期望 “web-* 和 “chicagonode*”,和上面一樣 - 主機名之后的所有內容都必須保留:
web-one do-not-delete
web-two do-not-delete
chicagonode1 do-not-delete
chicagonode2 do-not-delete
我嘗試過這樣的事情,但它不起作用:
sed “s/password. \[:alnum:\]/REMOVED/gi” logfile.txt
有人知道如何解決這個難題嗎?它可以是多個 sed 命令,一個襯墊不是必需的。
編輯:
謝謝HatLess!您的命令有效,但它也洗掉了假設不被洗掉的關鍵字,即:以下示例中的“one-six”:
parallels@debian-gnu-linux-10:/media/psf/Home$ cat input
one two three
four fife
six
password secret123
password: secret123 do-not-delete
password = secret123 do-not-delete
app_password=secret123 do-not-delete
web-one do-not-delete
web-two do-not-delete
chicagonode1 do-not-delete
chicagonode2 do-not-delete
parallels@debian-gnu-linux-10:/media/psf/Home$ sed 's/\(password[^[:alpha:]]*\)\?[^ ]*\(.*\)/REMOVED\2/' input
REMOVED two three
REMOVED fife
REMOVED
REMOVED
REMOVED do-not-delete
REMOVED do-not-delete
REMOVED do-not-delete
REMOVED do-not-delete
REMOVED do-not-delete
REMOVED do-not-delete
REMOVED do-not-delete
我們正在嘗試僅洗掉“密碼secret123”、“web- ,chicagonode*”。
很抱歉造成混亂。
uj5u.com熱心網友回復:
使用sed
$ cat input_file
password secret123 do-not-delete
password: secret123 do-not-delete
password = secret123 do-not-delete
app_password=secret123 do-not-delete
web-one do-not-delete
web-two do-not-delete
chicagonode1 do-not-delete
chicagonode2 do-not-delete
$ sed 's/\(password[^[:alpha:]]*\)\?[^ ]*\(.*\)/REMOVED\2/' input_file
REMOVED do-not-delete
REMOVED do-not-delete
REMOVED do-not-delete
REMOVED do-not-delete
REMOVED do-not-delete
REMOVED do-not-delete
REMOVED do-not-delete
REMOVED do-not-delete
\(password[^[:alpha:]]*\)\?- 可選組,如果它在模式中,它將從密碼匹配到下一個字母字符的出現。這?使它成為可選的。盡管在一個組括號中,但它將被排除在外,因為它沒有在帶有反向參考的替換中呼叫\1[^ ]*- 如果圖案不以密碼開頭,則從這里開始。這將與空間的下一次出現相匹配。由于它不在括號中,因此將被排除在外。\(.*\)- 匹配其他所有內容。這在第二個括號組內,因此可以保留并回傳反向參考\2/REMOVED\2/'REMOVED- 用回傳參考的第二個括號替換排除的所有內容\2
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/473082.html
