как заменить слово на *** в awk (unix) - PullRequest
0 голосов
/ 25 июля 2011

У меня есть несколько запросов, как показано ниже в одном файле.Я хочу заменить данные после «пароля» на «**».Я попытался с помощью приведенной ниже команды.Но я не в состоянии это сделать.Можете ли вы предложить, как это должно быть сделано?

файл запроса содержит, как показано ниже:

->->->->->->->-> 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 ]

1 голос
/ 25 июля 2011

Вы пытались избежать * например \* для каждого? так что \*\*\*\*?

0 голосов
/ 25 июля 2011

Примитивно, но работает!:

sed -e "s/PASSWORD.*CHANCODE/PASSWORD\*\*\*\*CHANCODE/g" pass.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...