尝试将整个文件夹的相同格式的文件合并到合并的文件中。
head File1.txt
11 116701285 204
11 116701286 209
11 116701287 209
11 116701288 208
11 116701289 209
11 116701290 208
11 116701291 208
11 116701292 210
11 116701293 209
11 116701294 213
head File2.txt
11 116701285 188
11 116701286 192
11 116701287 191
11 116701288 191
11 116701289 191
11 116701291 191
11 116701292 194
11 116701293 194
11 116701294 199
......
head FileN.txt
11 116701285 190
11 116701286 192
11 116701287 191
11 116701288 189
11 116701289 191
11 116701290 192
11 116701291 193
11 116701292 197
11 116701293 196
11 116701294 199
所需的输出(前两列之后的列数将对应于文件数。所有文件中的前两列均相同。该文件中没有标题)
11 116701285 188 204 190
11 116701286 192 209 192
11 116701287 191 209 191
11 116701288 191 208 189
11 116701289 191 209 191
11 116701290 191 0 192
11 116701291 191 208 193
11 116701292 194 210 197
11 116701293 194 209 196
11 116701294 199 213 199
如果元素不存在,则填写0。使用连接,但只能做两个文件。
您可以使用awk
:
awk '{
k=$1 OFS $2
}
FNR == NR {
v[++n] = k
}
{
a[ARGIND,k] = $3
}
END {
for(j=1; j<=n; j++) {
printf "%s", v[j]
for (i=1; i<ARGC; i++)
printf "%s", OFS ((i,v[j]) in a ? a[i,v[j]] : 0)
print ""
}
}' File*.txt | column -t
11 116701285 204 188 190
11 116701286 209 192 192
11 116701287 209 191 191
11 116701288 208 191 189
11 116701289 209 191 191
11 116701290 208 0 192
11 116701291 208 191 193
11 116701292 210 194 197
11 116701293 209 194 196
11 116701294 213 199 199
如果您需要一个衬板,请使用:
awk '{k=$1 OFS $2} FNR==NR{v[++n]=k} {a[ARGIND,k] = $3} END{for(j=1; j<=n; j++) {printf "%s", v[j]; for (i=1; i<ARGC; i++) printf "%s", OFS ((i,v[j]) in a ? a[i,v[j]] : 0); print ""}}' File*.txt
column -t
用于表格输出。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句