小问题,但对我来说很难。我有两个文件 文件A:
www.def.aBc.com
123.aaa.cOm
555.bbb.com.hk
www.fwe.wef.CcC.hk
www.abc.com
555.hjr.bbb.cOm.hk
www.ccc.hk
www.def.Abc.coM
123.aaa.COM
555.bbb.com.Hk
www.fwe.wef.cCc.hk
www.aBc.com
555.hjr.bbb.com.hK
www.ccc.hk
档案B:
aaa.com
abc.com
bbb.com.hk
ccc.hk
如果匹配单词的结尾,我尝试将文件B附加到文件A(不关心大小写)。 输出如下:
www.def.aBc.com abc.com
123.aaa.cOm aaa.com
555.bbb.com.hk bbb.com.hk
www.fwe.wef.CcC.hk ccc.hk
www.abc.com abc.com
555.hjr.bbb.cOm.hk bbb.com.hk
www.ccc.hk ccc.hk
www.def.Abc.coM abc.com
123.aaa.COM aaa.com
555.bbb.com.Hk bbb.com.hk
www.fwe.wef.cCc.hk ccc.hk
www.aBc.com abc.com
555.hjr.bbb.com.hK bbb.com.hk
www.ccc.hk ccc.hk
答案 0 :(得分:2)
您也可以使用sed
。
for line in `cat file_b`;
do
sed -i -r "s/(^.*$line$)/\1 $line/Ig" file_a;
done
答案 1 :(得分:1)
尝试使用此脚本将融合结果存储在文件fusion_result
中:
if [[ -e fusion_result ]]
then
rm fusion_result
fi
for linea in `cat A`
do
compare=`echo $linea | tr [:upper:] [:lower:]` # Case insensitive
for lineb in `cat B`
do
if [[ $compare =~ $lineb ]] # Regex comparison
then
echo $linea $lineb >> fusion_result
fi
done
done
如果b中的行是多余的(即您有aaa.com和aaa.com.hk),请将if语句中的$lineb
更改为$lineb$
答案 2 :(得分:1)
使用awk
:
awk 'NR==FNR{a[$1]++;next}{for(x in a){if(index(tolower($0),x)>0)print $0,x}}' fileb filea
$ awk 'NR==FNR{a[$1]++;next}{for(x in a){if(index(tolower($0),x)>0)print $0,x}}' fb fa
www.def.aBc.com abc.com
123.aaa.cOm aaa.com
555.bbb.com.hk bbb.com.hk
www.fwe.wef.CcC.hk ccc.hk
www.abc.com abc.com
555.hjr.bbb.cOm.hk bbb.com.hk
www.ccc.hk ccc.hk
www.def.Abc.coM abc.com
123.aaa.COM aaa.com
555.bbb.com.Hk bbb.com.hk
www.fwe.wef.cCc.hk ccc.hk
www.aBc.com abc.com
555.hjr.bbb.com.hK bbb.com.hk
www.ccc.hk ccc.hk
答案 3 :(得分:1)
使用awk
awk 'BEGIN{IGNORECASE=1}NR==FNR{a[$1];next}{for (i in a) if ($1~i) print $0,i}' fileB fileA
IGNORECASE=1
不区分大小写