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