파일 1.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
파일 2.txt
117|9305|www.gahan.com
117|9306|www.google.com
117|9312|www.mihan.com
117|9307|translate.com
나는 출력을 원한다 :
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
file2.txt
두 번째 열 값을 기준으로 세 번째 열에 세 번째 열을 추가하고 싶습니다 . file1.txt
사실 두 번째 열을 기준으로 조인하고 싶은데,그들 사이에는 일대일 대응이 없습니다.. awk
또는를 사용하여 쉘 스크립트에서 이 작업을 어떻게 수행할 수 있습니까 grep
? sed
도와주세요.
답변1
해당 작업은 한 사람이 완료할 수 있습니다.앗:
awk -F'|' 'FNR==NR{host[$2]=$3;next}{$3=host[$2] $3}1' OFS='|' file2 file1
답변2
awk
이를 수행 하고 sed
함께 작업할 수 있는 방법은 다음과 같습니다 .
awk -F'|' '{print "s/"$2"|""/"$2"|"$3"/"}' file2.txt | sed -f /dev/stdin file1.txt