[英]Matching special characters in with sed
我有一個帶有以下行的文件。 我的目標是用**掩蓋諸如名稱,DOB,電子郵件地址,郵寄地址,居住地址,電話號碼,其他電話號碼等字段的值。 棘手的是,在下一個字段開始之前,文本可能沒有可預測的長度。 例如,城市的終點和州的起點..也許用*知道終點? 我正在使用.sed文件,並針對此日志文件運行它。 “ |” 也是文件的一部分。 它基本上是一個輸出到日志文件中的屏幕
-------------------------------------------------------------------------- --------
| XXX XX Requested function key not allocated. |
| ***** System ***** |
| - Maintain - 11:55 AM |
| < 1 more P 3 more > |
| *Action (A,D,M): _ |
| Office Number: 14 |
| Case ID: XXXXXXXXX Email Address: ___________________________________ |
| Name: TWENTYFIFTEE MAYSEVEN DOB: 11111950 *Correspondence Lang: _ |
| Street One Street Two |
| Mailing Address....: 7 MAY____________________ _________________________ |
| City...............: DALLAS_________ *State: TX Zip Code: 75062 - ____ |
| |
| Residential Address: 7 MAY____________________ _________________________ |
| City...............: DALLAS_________ *State: TX Zip Code: 75062 - ____ |
| Phone Number...:( ___ ) ___ - ____ Other Phone Number:( ___ ) ___ - ____ |
| Authorized Rep Last TTL First MI |
| Name........: ____________ ___ _________ _ |
| Authorized Representative Phone Number: ( ___ ) ___ - ____ |
| Last Updt Dttm......: 05/07/2015 11:55:01 AM Last Update User: JU14 |
| XXXXXX XXXXXX |
| |
----------------------------------------------------------------------------------
所以也許用*知道終點?
我不確定這是否是一個好方法。 似乎並非所有字段都帶有*
,但這並不涵蓋字段值中帶有*
的情況。
假設您只可以用*
字符替換整個字段,那么我會將其分成多個sed
命令(每個要替換的字段一個)。
它還需要一些手工工作; 在這里,我們替換了幾乎所有類型的30個字符.
包含30個*
字符,因為這是“名稱”值字段包含的字符數。
name_len=30
sed -r "s/(Name: ).{,$name_len}/\1$(printf '*%.0s' {1..$name_len})/g"
這對您的第9行的影響是
| Name: ****************************** DOB: 11111950 *Correspondence Lang: _ |
使用分隔符的情況下
for Balise in '| Name: <-> DOB:' ' DOB: <-> |' ' Email Address: <-> |'
do
sed ":cycle
s/\(${Balise%<->*}[*]*\)[^*]\(.*${Balise#*<->}\)/\1*\2/
t cycle" YourFile > TempFile
mv TempFile YourFile
done
for in
循環條目中通過由1個定界符,后跟<->
和結束定界符組成的字符串定義。
${Balise...}
的<->
*
遞歸更改2個定界符之間的字符 -i
選項來代替此處用於任何版本的臨時文件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.