Bendalf |
|
Темы:
36
Сообщения:
395
Участник с: 14 мая 2019
|
Пожалуйста помогите найти ошибку. В поиске много примеров, но они все ошибочные или не подходят к ситуации. нужно найти [слово 1], перейти на следующую строку, найти слово слово 2 , заменить слово 2 на слово 4 . скобки возле [слово 1] убрать нельзя, тк должно быть точное совпадение. Номера строк не известны. строк слово2 много. они могут быть разные или одинаковые. заменять нужно только после [слово 1] если найдено совпадение с ним и только один раз. Имеем [слово 1] слово 2 блабла слово 3 Надо [слово 1] слово 4 блабла слово 3 тут где то ошибка ->>
/^[слово 1]/ соответствует строке, которая начинается с [слово 1] n; Перейдите к следующей строке. s/^слово 2/слово 4/ На следующей строке замените слово 2 на слово 4 сделано на основе этого https://fooobar.com/questions/5809167/changing-next-line-after-pattern-with-awk-or-sed
С уважением, .
|
vasek |
|
Темы:
48
Сообщения:
11320
Участник с: 17 февраля 2013
|
Bendalf, условие задачи описано не конкретно. Что конкретно нужно? - заменить определенное слово на другое слово во всех строках? - заменить определенное слово на другое слово только в определенных строках, например, содержащих определенное другое слово/маркер? Например, заменить везде "слово 2" на "слово 4" ... ??? или что ??? ... или что то другое?
Ошибки не исчезают с опытом - они просто умнеют
|
Bendalf |
|
Темы:
36
Сообщения:
395
Участник с: 14 мая 2019
|
vasekнужно найти [слово 1], перейти на следующую строку, найти слово слово 2 , заменить слово 2 на слово 4 . скобки возле [слово 1] убрать нельзя, тк должно быть точное совпадение. Номера строк не известны.
С уважением, .
|
vasek |
|
Темы:
48
Сообщения:
11320
Участник с: 17 февраля 2013
|
BendalfА просто заменить слово 2 на слово 4 не канает? ... И почему именно искать [слово 1]? ... может в строке, содержащей слово 2, имеется маркер, который делает эту строку, отличимой от других?
Ошибки не исчезают с опытом - они просто умнеют
|
Bendalf |
|
Темы:
36
Сообщения:
395
Участник с: 14 мая 2019
|
vasekстрок слово2 много. маркера нет кроме строки [слово 1]. заменять нужно только после [слово 1] если найдено совпадение. я с инета пробовал разные варианты. сейчас ошибок не выскакивает, но содержимое файла не меняется.
С уважением, .
|
vasek |
|
Темы:
48
Сообщения:
11320
Участник с: 17 февраля 2013
|
Имеем cat ~/test.txt Применяя команду sed '/[слово 1]/n;0,/слово 2/{s/слово 2/слово 4/}' ~/test.txtполучаем
Ошибки не исчезают с опытом - они просто умнеют
|
Bendalf |
|
Темы:
36
Сообщения:
395
Участник с: 14 мая 2019
|
vasekвсё получилось. спасибо. можете пожалуйста обьяснить по шагам что делает как работает предложенная вами команда ? в инете везде ^ , а вы не стали что означает ноль после n , зачем там запятая после нуля ?
С уважением, .
|
Bendalf |
|
Темы:
36
Сообщения:
395
Участник с: 14 мая 2019
|
вот в этом примере что не верно https://fooobar.com/questions/5809167/changing-next-line-after-pattern-with-awk-or-sed ? первый ответ из четырех.
С уважением, .
|
vasek |
|
Темы:
48
Сообщения:
11320
Участник с: 17 февраля 2013
|
Bendalf, нет времени для ликбеза - читай man sed .... ну и всегда гугли несколько источников, например это
Ошибки не исчезают с опытом - они просто умнеют
|
indeviral |
|
Темы:
38
Сообщения:
3165
Участник с: 10 августа 2013
|
и man bash это от туда ^,;
Ошибки в тексте-неповторимый стиль автора©
|