gpt4 book ai didi

file - 合并/附加文件并在unix中重新编号第一列

转载 作者:行者123 更新时间:2023-12-04 05:46:00 35 4
gpt4 key购买 nike

我在不同目录(3个不同名称)中有很多(3个只是一个例子)文本文件,如下所示:

目录:A,文件名:run.txt 格式:txt制表符分隔

; file one 
10 0.2 0.5 0.3
20 0.1 0.6 0.8
30 0.2 0.1 0.1
40 0.1 0.5 0.3

目录:B,文件名:run.txt 格式:txt制表符分隔
; file two 
10 0.2 0.1 0.2
30 0.1 0.6 0.8
50 0.2 0.1 0.1
70 0.3 0.4 0.4

目录:C,文件名:run.txt 格式:txt 制表符分隔
; file three 
10 0.3 0.3 0.3
20 0.3 0.6 0.8
30 0.1 0.1 0.1
40 0.2 0.2 0.3

我想将所有三个 run.txt 文件合并为一个并重新编号第一列。生成的新文件将如下所示:
; file combined 
10 0.2 0.5 0.3
20 0.1 0.6 0.8
30 0.2 0.1 0.1
40 0.1 0.5 0.3

50 0.2 0.1 0.2
70 0.1 0.6 0.8
90 0.2 0.1 0.1
110 0.3 0.4 0.4

120 0.3 0.3 0.3
130 0.3 0.6 0.8
140 0.1 0.1 0.1
150 0.2 0.2 0.3

这是我的代码所在:
cat A/run.txt B/run.txt C/run.txt > combined.txt

(1) 我不知道如何处理第一列的重新编号

(2)我也不知道如何处理以“;”开头的评论

编辑:

让我清楚数字方案:
A/run.txt、B/run.txt和C/run.txt实际上是并行运行合二为一的。
所以每个人都会存储带有运行号的样本。然而,运行之间的差距可能是不均匀的。

(1) 对于第一个文件 A/run.txt (gap 为 10, 20-10, 30-20)
10, 10+10, 20+10, 30+10

(2) 对于第二个文件 B/run.txt,从 10 开始,但间隔为 20
(例如 30-10、50-70、70-50)
40 (from last line of the first file) + 10 (first in file two) = 50, 
50 + 20 = 70,70 + 20 = 90, 90+ 20 = 110

(3)文件C/run.txt从10开始,增量为10
110 (last number in file 2) + 10 = 120, 120+ 10 = 130,
130+10 = 140, 140+10 = 150`

最佳答案

#!/usr/bin/awk -f
BEGIN {
OFS = "\t"
printf "%s\n", "; file combined"
}
! /^;/ {
if (FILENAME != prevfile) {
prevnum = $1
prevfile = FILENAME
interval = 10
c = 0
}
c++
if (c == 2) {
interval = $1 - prevnum
}
$1 = (i += interval)
print
}

运行它:
$ ./renumber {A,B,C}/run.txt

给定您的样本输入,它会产生与您的样本完全匹配的输出。

关于file - 合并/附加文件并在unix中重新编号第一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10684454/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com