我是shell脚本新手。只想知道如何通过以下方式获得我想要的结果:
我有两个文件(FILE_A和FILE_B)
FILE_A包含:
09228606355,71295939,1,http://sun.net.ph/043xafj.xml,01000001C123000D30
09228505450,71295857,1,http://sun.net.ph/004xafk.xml,01000001C123000D30
FILE_B包含:
http://sun.net.ph/161ybfq.xml ,9220002354016,93111
http://sun.net.ph/004xafk.xml ,9220002354074,93111
如果FILE_B中存在FILE_A中的URL(第4个字段),则out将为:
09228505450,71295857,1,http://sun.net.ph/004xafk.xml,01000001C123000D30,9220002354074,93111
它将在FILE_A中显示整行,并添加FILE_B的第2和第3个字段。
我希望我的问题很明确。谢谢。
答案 0 :(得分:1)
这可能适合你(GNU sed):
sed -r 's/^\s*(\S+)\s*,(.*)/\\#^([^,]*,){3}\1#s#$#,\2#p/' fileB | sed -nrf - fileA
这将从fileB构建一个sed脚本并针对fileA运行它。第二个sed脚本以silent
模式运行,只打印出与sed脚本匹配的那些行。
答案 1 :(得分:0)
试试这个:
paste -d , A B | awk -F , '{if ($4==$6) print "match", $1,$2,$3,$4,$5,$7,$8;}'
我删除了文件B中的空格,以使$4==$6
生效。
我使用粘贴创建一个复合线,使用,
作为分隔线来获取一条线,。然后我使用awk
比较检查两个文件中的URL,如果找到匹配,则打印您关注的所有字段。