[英]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.