cat file1.txt
Код: Выделить всё
20190130150000 #timestamp-1
56 39
P A
S-4 B 4. E F 3
-9999 -9999 6.99 0.000 -9999 -9999
-9999 -9999 9.99 0.000 -9999 -9999
20190130151000 #timestamp-2
56 39
P A
S-4 B 4. E F 3
-9999 -9999 6.99 0.000 -9999 -9999
-9999 -9999 9.99 0.000 -9999 -9999
20190130152000 #timestamp-3
56 39
P A
S-4 B 4. E F 3
-9999 -9999 6.99 0.000 -9999 -9999
-9999 -9999 9.99 0.000 -9999 -9999
cat file2.txt
Код: Выделить всё
20190130150000 #timestamp-1
33 55.3
R A
S-4 B 3. E F 3
-9999 -9999 5.99 0.000 -9999 -9999
-9999 -9999 7.99 0.000 -9999 -9999
20190130151000 #timestamp-2
33 55.3
R A
S-4 B 3. E F 3
-9999 -9999 5.99 0.000 -9999 -9999
-9999 -9999 7.99 0.000 -9999 -9999
20190130152000 #timestamp-3
33 55.3
R A
S-4 B 3. E F 3
-9999 -9999 5.99 0.000 -9999 -9999
-9999 -9999 7.99 0.000 -9999 -9999
Я ищу awk-скрипт, чтобы перестроить его следующим образом:
Запишите все одинаковые временные метки вместе с последующими строками:
Обратите внимание: в файлах нет таких слов #timestamp, я просто упомянул об этом, чтобы было понятно.
Итак, вывод желания будет выглядеть так:
cat out.txt
Код: Выделить всё
20190130150000
56 39
P A
S-4 B 4. E F 3
-9999 -9999 6.99 0.000 -9999 -9999
-9999 -9999 9.99 0.000 -9999 -9999
20190130150000
33 55.3
R A
S-4 B 3. E F 3
-9999 -9999 5.99 0.000 -9999 -9999
-9999 -9999 7.99 0.000 -9999 -9999
20190130151000
56 39
P A
S-4 B 4. E F 3
-9999 -9999 6.99 0.000 -9999 -9999
-9999 -9999 9.99 0.000 -9999 -9999
20190130151000
33 55.3
R A
S-4 B 3. E F 3
-9999 -9999 5.99 0.000 -9999 -9999
-9999 -9999 7.99 0.000 -9999 -9999
20190130152000
56 39
P A
S-4 B 4. E F 3
-9999 -9999 6.99 0.000 -9999 -9999
-9999 -9999 9.99 0.000 -9999 -9999
20190130152000
33 55.3
R A
S-4 B 3. E F 3
-9999 -9999 5.99 0.000 -9999 -9999
-9999 -9999 7.99 0.000 -9999 -9999
Мой сценарий:
Код: Выделить всё
awk '
{
if ($1 ~ /^[0-9]{14}$/) {
timestamp = $1
print timestamp
next
}
print
}' file1.txt file2.txt
Подробнее здесь: https://stackoverflow.com/questions/784 ... -using-awk