bashスクリプトに1対1の対応がない場合は、列に基づいて2つのファイル(awk、grep、sed)をリンクします。

bashスクリプトに1対1の対応がない場合は、列に基づいて2つのファイル(awk、grep、sed)をリンクします。

ファイル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.txt2番目の列の値に基づいて3番目の列に3番目の列を追加したいと思います。file1.txt実は2列目を基準に結合したいのですが、それらの間に一対一の対応はありません。awkまたはを使用してシェルスクリプトでこれを行うにはどうすればよいですかgrepsed助けてください。

ベストアンサー1

その操作は一人で完了できます。アッ:

awk -F'|' 'FNR==NR{host[$2]=$3;next}{$3=host[$2] $3}1' OFS='|' file2 file1

おすすめ記事