Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Unix-системы Новый топик    Ответить
 sed заменить подстроку в строке  [new]
Aliara
Member

Откуда:
Сообщений: 30
Добрый день. Начала только осваивать текстовые процессоры в linux, поэтому никак не могу справиться с заданием

Есть файл с набором строк (java log)
25.08.2019 12:00:01 [Main:21] [thread-1] "nikolaev" "financial division" "Open form"
25.08.2019 12:00:02 [Main:25] [thread-1] "nikolaev" "financial division" "Click button"
25.08.2019 12:00:02 [Main:21] [thread-3] "minkevich" "legal department" "Open form"
25.08.2019 12:00:04 [Main:28] [thread-1] "nikolaev" "financial division" "Click button"
25.08.2019 12:00:02 [Main:21] [thread-3] "minkevich" "legal department" "Click button"

Строки всегда формата
date time [class] [thread] "user" "department" "action"

Необходимо изменить департамент на "untelTelecom" с использованием sed.
Если бы можно было использовать awk, то распарсила бы по пробелу и взяла бы $6. Но как тут добраться до департамента - не понимаю
25 авг 19, 13:47    [21957197]     Ответить | Цитировать Сообщить модератору
 Re: sed заменить подстроку в строке  [new]
bga83
Member

Откуда: Город герой Ленинград
Сообщений: 30700
Aliara,

случаем не каккие-нибудь EPAM-овские курсы? - там периодически встерчаются подобные задания , которые sed-ом решаются в виде кода строк на 100
26 авг 19, 07:57    [21957447]     Ответить | Цитировать Сообщить модератору
 Re: sed заменить подстроку в строке  [new]
Alex URS
Member

Откуда: 0f17
Сообщений: 223
/ / /
26 авг 19, 18:00    [21957821]     Ответить | Цитировать Сообщить модератору
 Re: sed заменить подстроку в строке  [new]
mefman
Member

Откуда:
Сообщений: 2589
Что, только сед?
Проще на нормальном языке написать...
26 авг 19, 23:09    [21957972]     Ответить | Цитировать Сообщить модератору
 Re: sed заменить подстроку в строке  [new]
vkle
Member

Откуда: Самара
Сообщений: 14699
Навскидку, что-то вроде такого:
cat java.log | sed 's;\([^"]*\s"[^"]*"\s\)"[^"]*"\(\s"[^"]*"\).*;\1"untelTelecom"\2;'

Может регулярка и поизящнее получится, но не сейчас.
27 авг 19, 00:24    [21957992]     Ответить | Цитировать Сообщить модератору
 Re: sed заменить подстроку в строке  [new]
vkle
Member

Откуда: Самара
Сообщений: 14699
В конце регекспа .* лишние
27 авг 19, 00:26    [21957993]     Ответить | Цитировать Сообщить модератору
 Re: sed заменить подстроку в строке  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48155

vkle
Может регулярка и поизящнее получится

Вот это по идее должно заменить второй закавыченный кусок:
cat java.log | sed 's;"[^"]*";"untelTelecom";2'

Posted via ActualForum NNTP Server 1.5

27 авг 19, 00:47    [21957999]     Ответить | Цитировать Сообщить модератору
 Re: sed заменить подстроку в строке  [new]
vkle
Member

Откуда: Самара
Сообщений: 14699
Dimitry Sibiryakov
Вот это по идее должно заменить второй закавыченный кусок:
cat java.log | sed 's;"[^"]*";"untelTelecom";2'
Вроде, компактный вариант правильно сработал.
Эх, век - учись :)
27 авг 19, 16:11    [21958441]     Ответить | Цитировать Сообщить модератору
Все форумы / Unix-системы Ответить