Перестановка с той же отметкой времени с помощью awkLinux

Anonymous
Перестановка с той же отметкой времени с помощью awk

Сообщение Anonymous »

У меня есть пара файлов.
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
EOF
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
EOF
Я ищу 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
EOF
Мой сценарий:

Код: Выделить всё

awk '
{
if ($1 ~ /^[0-9]{14}$/) {
timestamp = $1
print timestamp
next
}
print
}' file1.txt file2.txt
Этот скрипт просто печатает те же входные данные. Это не печать вывода желания.

Подробнее здесь: https://stackoverflow.com/questions/784 ... -using-awk

Вернуться в «Linux»