簡體   English   中英

生成新的Linux文件中的問題

[英]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代碼和文本文件中指定分隔符,看起來您打算處理制表符分隔的文件
  • 由於我們不希望將默認空格用作分隔符,因此需要指定tab。 但是制表符有一個竅門,這是由於join一個怪癖:如果我們指定-t '\\t'join似乎會將\\t看成字面上的兩個字符\\t ,並給出一個錯誤。
  • 因此,指定選項卡的一種方法是執行文字選項卡,鍵入-t '然后輸入ctrl -v ,然后輸入tab插入文字選項卡,然后輸入'
  • 或者,我覺得更簡單,就像我們在這里所做的那樣,請使用C樣式的轉義制表符-t$'\\t'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM