好的,我和你们其中一个精彩的巫师一起回来了,我一直在玩awk,并且还没有弄明白。所以没有进一步的延迟,这是我试图解决的问题。
我有两个文件
file1看起来像这样(实际文件有数百行w随机字)
somewebsite
someotherwebsite
somestinking
blahblah
foobar
file2看起来像这样(许多tlds,更多)
.com.th
.co.uk
.com
.de
.ath.cx
好的,我需要file1中的每一行让每个tld从file2添加到新行....
进一步详细说明,需要复制file1中的每一行,以便它可以将file2中的每个tld添加到file1中的每个条目。
输出应该是这样的:
somewebsite.com.th
somewebsite.co.uk
somewebsite.com
somewebsite.de
somewebsite.ath.cx
someotherwebsite.com.th
someotherwebsite.co.uk
someotherwebsite.com
someotherwebsite.de
someotherwebsite.ath.cx
somestinking.com.th
somestinking.co.uk
somestinking.com
somestinking.de
somestinking.ath.cx
blahblah.com.th
blahblah.co.uk
blahblah.com
blahblah.de
blahblah.ath.cx
foobar.com.th
foobar.co.uk
foobar.com
foobar.de
foobar.ath.cx
我希望这对某些人有意义,我试图弄清楚如何做到这一点,它确实在我失败的所有方面都很有趣。
提前谢谢你。我确信我不是现在,过去或将来都尝试过这一点的唯一人,因此解决方案肯定会帮助下一个尝试这样做的人。
答案 0 :(得分:3)
在awk中:
$ awk 'NR==FNR{a[$1];next}{for(i in a) print $1 i}' file2 file1
somewebsite.co.uk
somewebsite.de
somewebsite.com
somewebsite.ath.cx
somewebsite.com.th
...
由于in
运算符的性质,tlds出来的顺序是随机的。
或者只使用join
(和tr
):
$ join -j 2 file1 file2 | tr -d ' '
somewebsite.com.th
somewebsite.co.uk
somewebsite.com
somewebsite.de
...
答案 1 :(得分:0)
试试这个 -
$head file?
==> file1 <==
somewebsite
someotherwebsite
somestinking
blahblah
foobar
==> file2 <==
.com.th
.co.uk
.com
.de
.ath.cx
$while read a; do while read b; do echo "$a$b"; done < file2; done < file1
somewebsite.com.th
somewebsite.co.uk
somewebsite.com
somewebsite.de
somewebsite.ath.cx
someotherwebsite.com.th
someotherwebsite.co.uk
.....
.....