2011-07-25 42 views
0

我在一個文件中有一些像下面這樣的請求。我想將「密碼」後面的數據替換爲「* *」。我嘗試使用下面的命令。但我無法做到。你能建議它應該怎麼做?如何用***替換一個單詞在awk中(unix)

請求文件中包含如下:

->->->->->->->-> 07/06/11 13:26:21 cp 2191444 pp 2134056 
qid 2097161 qtyp 1005 
C0dJ 2907100211ADVVM1 00^ZLTBLTBLTB   HSM_S2^^KMKEYTYPE^Y605^^KMKEYDATE^Y01012000^^MEMBERNO^Y^^OCISPTY^Y00 
70002643^^KMIV^Y^^ENCTOKEN^Y^^PASSWORD^Y1152^^CHANCODE^Y003^^SELLGENT^Y004^^SECLVLCD^Y005^^USRSRVDT^Y006^^USRSRVTM 
^Y001^^PWDSRVDT^Y002^^PWDSRVTM^Y010^^PASSEFFDT^Y009^^ 

但密碼即chancode後的單詞不是恆定的,甚至改變後的分隔符應該在那裏。

我嘗試使用下面的命令:

awk -F"PASSWORD^" '{f1=$1; f2=$2; sub(substr(f2,1,index(f2,"^")-1),"****",f2); print f1 "PASSWORD^" f2}' 

回答

1

您是否嘗試過逃避*如\*爲每一個?所以\*\*\*\*

0

原始,但工程!:

sed -e "s/PASSWORD.*CHANCODE/PASSWORD\*\*\*\*CHANCODE/g" pass.txt 
相關問題