한 파일의 타임스탬프를 다른 파일에 삽입

한 파일의 타임스탬프를 다른 파일에 삽입

두 개의 파일이 있습니다. 그 중 하나는 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

관련 정보