удалить столбец отметки времени из файла журнала, не затрагивая фактические журналы в bash - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть файлы журналов с отметками времени, я хочу удалить эти отметки времени и просто сохранить журналы как есть.
Содержимое файла выглядит следующим образом.

$ cat test 
04-13 04:33:11.341: abc : xyz
04-13 04:33:11.342: aaa------ : bbbb
04-13 04:33:11.342: sometext sometext

Я пытался удалить его, используя awk с приведенной ниже командой.

$ cat test | awk -F": " '{$1=""; print}'
 abc  xyz
 aaa------  bbbb
 sometext sometext

Но, как вы видите, он также удаляет : из реальных журналов? Является ли awk неправильным выбором для этого, я не могу использовать cut, поскольку я использую двухсимвольный длинный разделитель.

Какие-либо другие предложения?

Ответы [ 2 ]

2 голосов
/ 24 апреля 2020

Если это единственная / точная структура ваших данных, то cut. в противном случае, да, awk или sed и друзья.

cut -d ' ' -f3- file.txt

Вывод

abc : xyz
aaa------ : bbbb
sometext sometext
1 голос
/ 24 апреля 2020

Используйте более уточняющий разделитель

$ awk -F "[0-9]: " '{$1=""; print}' test
 abc : xyz
 aaa------ : bbbb
 sometext sometext

Это означает: разделитель - это последовательность digit, :, space.

awk удаляет разделитель полей (FS) из входного файла и заменяет их разделителем выходного поля (OFS). Это обычно невидимо для пользователя, если он использует значения по умолчанию. Вы можете установить OFS=FS, чтобы разделитель полей оставался на выходе:

$ awk -F ": " 'BEGIN{OFS=FS}{$1=""; print}' test
: abc : xyz
: aaa------ : bbbb
: sometext sometext
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...