![bash 스크립트에 일대일 대응이 없는 경우 열을 기반으로 두 파일(awk, grep, sed)을 연결합니다.](https://linux55.com/image/70833/bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%20%EC%9D%BC%EB%8C%80%EC%9D%BC%20%EB%8C%80%EC%9D%91%EC%9D%B4%20%EC%97%86%EB%8A%94%20%EA%B2%BD%EC%9A%B0%20%EC%97%B4%EC%9D%84%20%EA%B8%B0%EB%B0%98%EC%9C%BC%EB%A1%9C%20%EB%91%90%20%ED%8C%8C%EC%9D%BC(awk%2C%20grep%2C%20sed)%EC%9D%84%20%EC%97%B0%EA%B2%B0%ED%95%A9%EB%8B%88%EB%8B%A4..png)
파일 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