我有一个名为sendry.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
答案 0 :(得分:0)
请您尝试以下。
awk '{$2=$2 ~ /_up\//?"databases/"$2:"databases_users/"$2} 1' Input_file
答案 1 :(得分:0)
$ 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