如何在awk(unix)中用***替换单词

时间:2011-07-25 12:23:10

标签: unix awk

我在一个文件中有一些如下所示的请求。我想将“密码”后的数据替换为“ * *”。我尝试使用以下命令。但我无法做到。你能建议怎么做吗?

请求文件包含如下:

->->->->->->->-> 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}' 

2 个答案:

答案 0 :(得分:1)

你有没有试过逃避* \*每个?所以\*\*\*\*

答案 1 :(得分:0)

原始,但有效!:

sed -e "s/PASSWORD.*CHANCODE/PASSWORD\*\*\*\*CHANCODE/g" pass.txt