A tarefa pode ser executada por um awk :
awk -F'|' 'FNR==NR{host[$2]=$3;next}{$3=host[$2] $3}1' OFS='|' file2 file1
arquivo1.txt
112|9305|/inst.exe
112|9305|/lkj.exe
112|9305|/dje.jar
112|9305|/ind.pdf
112|9306|/ma.exe
112|9306|/ngg.pdf
112|9307|/jhhh.dat
112|9312|/ee.dat
112|9312|/qwq.dll
arquivo2.txt
117|9305|www.gahan.com
117|9306|www.google.com
117|9312|www.mihan.com
117|9307|translate.com
Eu quero saída:
112|9305|www.gahan.com/inst.exe
112|9305|www.gahan.com/lkj.exe
112|9305|www.gahan.com/dje.jar
112|9305|www.gahan.com/ind.pdf
112|9306|www.google.com/ma.exe
112|9306|www.google.com/ngg.pdf
112|9307|translate.com/jhhh.dat
112|9312|www.mihan.com/ee.dat
112|9312|www.mihan.com/qwq.dll
Eu quero adicionar a terceira coluna de file2.txt
à terceira coluna de file1.txt
com base nos valores da segunda coluna. Na verdade, quero me juntar a eles com base na segunda coluna, mas não há correspondência de um para um entre eles . Como posso fazer isso com awk
ou grep
ou sed
no script de shell? Por favor me ajude.
A tarefa pode ser executada por um awk :
awk -F'|' 'FNR==NR{host[$2]=$3;next}{$3=host[$2] $3}1' OFS='|' file2 file1
Veja uma maneira possível de fazer isso com awk
e sed
trabalhando em conjunto:
awk -F'|' '{print "s/"$2"|""/"$2"|"$3"/"}' file2.txt | sed -f /dev/stdin file1.txt
Tags bash text-processing awk sed