2010-02-09 2 views
2

Я пытаюсь открыть файл журнала и манипулировать строками, если это необходимо. НапримерОшибка команды замены Awk

2010-01-31 00:05:59,400 -0500 | [VHX4077ff8Ze1sTnE-op51V] | [TB-bce11b:-16a2-5ed9f542] | [6C7CA345F63F835CB353FF15BD6C5E052EXX8E7A | [email protected] | 31933782 | 172.9.8.3 | DEVICE_ID_CREATED]

Мне нужно изменить столбец 5 и удалить все до Superfly. По существу удалите все, что есть, и символ «@». Этот файл будет содержать записи, в которых столбец 5 не имеет записи с номером @, и эту строку не нужно редактировать. И число может быть любым числом цифр перед @. Я попытался использовать команду замены awk, но я не могу заставить ее работать.

Мой сценарий:

awk -F "|" {' sub(".*@","",$5) print $5 '} test.log 

awk: cmd. line:3: print $5
awk: cmd. line:3:^syntax error

ответ

4
awk -F "|" {' sub(".*@","",$5); print $5 '} test.log 

Missing точка с запятой после первого заявления.

+0

Благодарности мехов, я все еще получаю ошибку после попытки вашей команды: AWK: суб ("", $ 5 "* @."); print $ 5 awk:^ошибка синтаксиса – roacha

+0

awk -F "|" {'sub (". * @", "", $ 5); печать $ 5 «} TEST.LOG из моей командной строки Linux с выходами данных выборки„SuperFly“ Ваш переводчик AWK может быть требуя; после последнего заявления тоже awk -F "|" {'sub (". * @", "", $ 5); печать $ 5; '} test.log Шахта не была. –

+0

Как FYI, мне обычно проще использовать параметр -f и редактировать файл. Это более читаемо в дороге, и многие редакторы могли заметить плохой синтаксис. –

1

Вы редактируете весь файл и заменяете каждую строку значением столбца 5? если нет, то

awk -F"|" '$5~/@/{ sub(".*@","",$5) }{print}' OFS="|" file 
Смежные вопросы