Linux Shell:如果string中有相同的单词,则将两个string从文件中合并【JAVA教程】

!
也想出现在这里? 联系我们
信息

Linux Shell:如果string中有相同的单词,则将两个string从文件中合并,第1张

概述Linux Shell:如果string中有相同的单词,则将两个string从文件中合并

小问题,但对我来说很难。 我有两个文件。

文件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

Bash脚本打印模式1,从模式2到模式3search并打印所有行,并打印模式4

find一个模式并修改下一行而不修改文件中的其他内容。 最好是基于linux的命令(sed,awk等)

仅在外部嵌套代码块的开始和结束处插入代码

如何在linux中search两个不同date的日志文件

当列K空AWK / Perl时提取行

用反向引用在两个模式之间加上所有行

合并非常大的csv文件与公共列

awk +筛选日志文件

在bash命令中调用一个自定义函数

使用awk,grep,sedparsing大型日志文件(〜5gb)时的性能问题

使用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}}\’ 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

你也可以使用sed 。

for line in `cat file_b`; do sed -i -r \”s/(^.*$line$)/1 $line/Ig\” file_a; done

试试这个脚本,将融合的结果存储在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$

使用awk

awk \’BEGIN{IGnorECASE=1}NR==FNR{a[$1];next}{for (i in a) if ($1~i) print $0,i}\’ fileB fileA

说明

IGnorECASE=1不区分大小写

总结

以上是内存溢出为你收集整理的Linux Shell:如果string中有相同的单词,则将两个string从文件中合并全部内容,希望文章能够帮你解决Linux Shell:如果string中有相同的单词,则将两个string从文件中合并所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞193 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容