我是Unix新手,並且遇到連接兩個製表符分隔的文本文件時遇到問題的情況,該文本文件基於帶有連字符索引的字段。例如:在Unix中加入連字符索引字段
file1.txt
33-47 10 22 -99 10
33-48 15 22 165 456
33-101 10 22 -99 15.8
33-126 10 22 -99 15.5
34-133 10 22 -99 13
40-109 10 22 -99 12
41-102 88 21 -99 20
45-169 54 214 -99 4
100-11 652 524 87 5
101-25 45 54 153 8
101-26 1285 12 155 9.5
和
從本質上講,文件1是一個查找表,我想附加文件1的匹配線到文件2,以創建一個完整的表的變量,即:
file3.txt (expected)
1 5432 545 33-101 10 22 -99 15.8
1 5524 5420 33-126 10 22 -99 15.5
0 855520 52220 33-47 10 22 -99 10
0 5463 5420 34-133 10 22 -99 13
0 5563 5423 40-109 10 22 -99 12
1 6098 -99 40-109 10 22 -99 12
我使用Cygwin,並試圖第一排序的字段數值,通常,並且與LC_COLLATE = C語言環境,以及許多AWK NR == FNR命令,但我仍然得到一個空白k outfile。
這是全新的,非常令人沮喪。如果可以的話請幫忙!
謝謝!
這真棒,適合我。我還發現加入工作,但我的一些文件有空白把它扔掉。 如果你得到第二個翻譯我會永遠感激! – akw
一些解釋: – SignalToNoise
一些解釋: 讀取文件1(NR == FNR) 構建數組信息。索引是第1列中的值(awk使用字符串作爲索引) 數組信息[xx-yy]的值是字符串=行的其餘部分 gensub佔用行($ 0)並替換第一個以tab/[^ \ t] * \ t /由一個空字符串組成。這刪除了第一個列。 第三代gensub意味着只替換第一個匹配。 /[^ \ t] * \ t /:正則表達式匹配許多非選項卡字符後跟一個選項卡。 讀取文件2(NR!= FNR) $ NF:每行的最後一個字。發生匹配數組信息的索引。 打印行($ 0),追加info [$ NF]的值 – SignalToNoise