比较两个文件的两列中的值 - awk

时间:2014-07-30 18:44:06

标签: awk

如果file1.txt的Ist中的值小于file2.txt的Ist列中的值,我想从file2.txt中插入第二列的值作为file1.txt DEPENDING中的附加列 (见所需的输出)

FILE1.TXT

time_stamp ...   values from 1 to n column
0.005000    1   -0.491038 0.251996 -0.681055 0.238940 . . . . . n 
0.010000    1   -0.489565 0.254198 -0.676638 0.244113 . . . . . n
0.015000    1   -0.486287 0.256085 -0.671614 0.249955 . . . . . n
0.020000    1   -0.481431 0.257644 -0.665849 0.256754 . . . . . n
.
.
2.090000    1   -0.198916 0.255882 -0.215078 0.377169 . . . . . n
2.095000    1   -0.201185 0.248889 -0.215151 0.371873 . . . . . n
2.100000    1   -0.202041 0.240778 -0.214463 0.365228 . . . . . n
2.105000    1   -0.200996 0.231328 -0.212667 0.357113 . . . . . n
.
.
.
.

FILE2.TXT

duration symbol
0.37800  # (from 0.00000 to 0.37800 >>> symbol #)
0.79800  l (from 0.37800 to 0.79800 >>> symbol l)
0.87800  i
.
.
1.04600  aI
1.10400  k
1.17200  t
.
.
.
2.04600  b
2.09400  i
2.10400  I
.
.
.  
3.96800  b
4.01600  I
.
.
.
4.35000  i
4.77200  #

期望的输出:

symbol time_stamp
#      0.005000    1   -0.491038 0.251996 -0.681055 0.238940 . . . . . n 
#      0.010000    1   -0.489565 0.254198 -0.676638 0.244113 . . . . . n
#      0.015000    1   -0.486287 0.256085 -0.671614 0.249955 . . . . . n
#      0.020000    1   -0.481431 0.257644 -0.665849 0.256754 . . . . . n
.
.
b      2.090000 1   -0.198916 0.255882 -0.215078 0.377169 . . . . . n
i      2.095000 1   -0.201185 0.248889 -0.215151 0.371873 . . . . . n
i      2.100000 1   -0.202041 0.240778 -0.214463 0.365228 . . . . . n
i      2.105000 1   -0.200996 0.231328 -0.212667 0.357113 . . . . . n
.
.
.
.

1 个答案:

答案 0 :(得分:2)

你需要这样的东西:

awk '
NR==FNR { key2val[$1] = $2; next }
{
    pfx=""
    for (key in key2val) {
        if (key < $1) {
            pfx = key2val[key]
        }
    }
    print pfx, $0
}
' file2 file1

我确信循环中的数学运算是错误的,但所有那些.行混乱并混淆了输入和输出文件意味着我们没有任何东西可以轻松复制/粘贴以进行测试所以我'我不打算在那部分付出任何努力,无论如何,你应该能够根据这个简单明了的程序结构来详细说明。