【发布时间】:2019-02-21 13:06:10
【问题描述】:
目的是检查 file1 中第 3 列和第 4 列的值是否与 file2 中的第 1 列匹配。
如果任何值匹配做:
1) 使用 file1 第 5 列和第 6 列的信息替换 file2 中第 2 列和第 3 列的值
2) 将 file2 中的字符串 ($1,1,5) 和字符串 ($1,6,5) 替换为 file1 中第 7 列和第 8 列的值
3) 替换行添加字符 R,未替换行添加 O。
文件1
2,100,31431,37131,999991.70,0000000.30,11111,22222,3
3,100,31431,37471,111113.20,1111111.30,22222,33333,4
文件2
3143137113 318512.50 2334387.50 100
3143137131 318737.50 2334387.50 100
3143137201 319612.50 2334387.50 100
3143137471 322987.50 2334387.50 100
3143137491 323237.50 2334387.50 100
期望的输出:
31431,37113,318512.50,2334387.50,100,O
11111,22222,999991.70,0000000.30,100,R
31431,37201,319612.50,2334387.50,100,O
22222,33333,111113.20,1111111.30,100,R
31431,37491,323237.50,2334387.50,100,O
我试过了
awk '
BEGIN{
OFS=","
}
FNR==NR {
f1_56[$3$4]=($5 OFS $6)
f1_78[$3$4]=($7 OFS $8)
next
}
{$(NF+1)="O"}
$1 in f1_56 {
split(f1_56[$1], a, OFS)
$2 = a[1]
$3 = a[2]
split(f1_78[$1], a, OFS)
$1=a[1] OFS a[2]
$NF="R"
} 1
' FS=, file1 FS=' ' file2
提前致谢
【问题讨论】:
标签: awk