[英]Issue in Generating new linux file
我正在尝试使用linux命令从文件1到文件2执行vlookup,而我却得到了格式错误的正确结果。
为了更清楚一点
文件1:
http://www.amazon.com/dp/B00006IBAX test1_test test3 test2 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4
文件2:
http://www.amazon.com/dp/B00006IBAX
所需输出:
http://www.amazon.com/dp/B00006IBAX test1_test test3 test2 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4
我使用的代码:
FNR==NR{s=$1; sub(".*"$2,"");a[s]=$0; next} a[$1]{OFS = "\t"; FS = "\t"; print $0 a[$1]}
我得到的输出:
http://www.amazon.com/dp/B00006IBAX_test test3 test2 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4
会出现一些未对齐的情况,由于该原因,我无法处理该文件。 如果查找结果成功,我希望文件1中的数据恰好在文件2中。 请帮我
不需要awk
,有join
命令:
join -t$'\t' file1 file2
因此,考虑到原始输入,您现在应该看到:
http://www.amazon.com/dp/B00006IBAX test1_test test3 test2 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4 test4
man join
节选:
对于具有相同联接字段的每对输入线,将一条线写入标准输出。 默认联接字段是第一个,由空格分隔。
-t
在您的情况下从awk
代码和文本文件中指定分隔符,看起来您打算处理制表符分隔的文件 join
一个怪癖:如果我们指定-t '\\t'
, join
似乎会将\\t
看成字面上的两个字符\\
和t
,并给出一个错误。 -t '
然后输入ctrl -v ,然后输入tab插入文字选项卡,然后输入'
-t$'\\t'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.