将一个文件中的时间戳插入到另一个文件中

将一个文件中的时间戳插入到另一个文件中

我有两个文件。其中一个称为file.gpx,是轨迹点列表,每个轨迹点由三行组成:

<trkpt...>
<ele>...</ele>
</trkpt>

另一个称为times.txt,是一个单独行的列表,每行如下所示:

<time>...</time>

我需要做的是将<time>...</time>times.txt 中的每一行插入 file.gpx 中,以便 file.gpx 中的所有轨迹点如下所示:

<trkpt...>
<ele>...</ele>
<time>...</time>
</trkpt>

我想知道如何实现这一目标。

...代表不同的值,与我的问题的目的无关。)

非常感谢您的帮助。

答案1

使用awk

awk '
  FNR==NR{             # if this is the first input file...
    t[++idx]=$0        # save record in array `t` at index `idx` (pre-incremented)
    next               # continue with next record
  }
  1                    # print record of second input file
  /<ele>.*<\/ele>/{    # if record matches...
    print t[++idx2]    # print array value at `idx2` (pre-incremented) 
  }
' times.txt file.gpx > new.gpx

答案2

使用 GNU sed,您可以使用以下命令从文件中读取每个匹配行并插入一行R

sed '\:<ele>.*</ele>:R times.txt' file.gpx

您可以将结果重定向到新文件,或file.gpx通过添加选项进行就地更改-i

答案3

使用awk

awk ' 
  BEGIN { f=ARGV[2]; ARGV[2]=""; }

  /<trkpt.*>/ {k=3}

  (k-->0) && (!k) &&
  (getline t < f > 0) {
     print t
  };1

  END { close(f) }
' file.gpx times.txt

相关内容