Как заменить слово, оканчивающееся на что-либо, другим словом в файле - PullRequest
0 голосов
/ 09 июня 2019

У меня есть файл sentry.tmp со структурой

8272275 docliente_up/ant_aux_secciones_mes2 556321
8272276 docliente_up/ant_aux_ufcp_mes1  556322
8272278 docliente_up/ant_aux_ufcp_mes2  556324
8272460 docliente_up/jmn_sms_sevilla    556471
8837577 docliente_bu/do_acumulacion/fecha=20190502  550972
8837578 docliente_tres/do_acumulacion/fecha=20190524    550972
8837579 docliente/do_acumulacion/fecha=20190503 550972

. Мне нравится добавлять слово databases перед словами, заканчивающимися на _up/, которые находятся в начале второго столбца, идругие добавляют слово databases_users.

Примерно так:

8272275 databases/docliente_up/ant_aux_secciones_mes2   556321
8272276 databases/docliente_up/ant_aux_ufcp_mes1    556322
8272278 databases/docliente_up/ant_aux_ufcp_mes2    556324
8272460 databases/docliente_up/jmn_sms_sevilla  556471
8837577 databases_users/docliente_bu/do_acumulacion/fecha=20190502  550972
8837578 databases_users/docliente_tres/do_acumulacion/fecha=20190524    550972
8837579 databases_users/docliente/do_acumulacion/fecha=20190503 550972

У меня есть файл с именем первого слова второго столбца.

$cat init.txt
 docliente_up
 docliente_bu
 docliente_tres
 docliente

и я использую этот код, но не могу найти способ сделать это.

for i in `awk '{print $2}' $wkdir/init.txt`
 do 
if  [[ "$i" == *_up ]]
 then 
  awk -v basedatos=$i '{gsub(/$basedatos/,"databases/$basedatos");}1' sentry.tmp >sentry.new
 else 
  awk -v basedatos=$i '{gsub(/$basedatos/,"databases_users/$basedatos");}1' sentry.tmp >>sentry.new
 fi
done

Ответы [ 2 ]

0 голосов
/ 09 июня 2019
$ awk '{$2 = "databases" ($2 ~ "_up/" ? "" : "_users") "/" $2} 1' file
8272275 databases/docliente_up/ant_aux_secciones_mes2 556321
8272276 databases/docliente_up/ant_aux_ufcp_mes1 556322
8272278 databases/docliente_up/ant_aux_ufcp_mes2 556324
8272460 databases/docliente_up/jmn_sms_sevilla 556471
8837577 databases_users/docliente_bu/do_acumulacion/fecha=20190502 550972
8837578 databases_users/docliente_tres/do_acumulacion/fecha=20190524 550972
0 голосов
/ 09 июня 2019

Не могли бы вы попробовать следующее.

awk '{$2=$2 ~ /_up\//?"databases/"$2:"databases_users/"$2} 1' Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...