Найти и заменить с помощью sed с помощью подстановочных знаков при поиске и замене

Поэтому я понимаю, как использовать sed , а именно при поиске с использованием подстановочных знаков .* . Проблема, с которой я столкнулась, заключается в том, как найти и заменить с помощью подстановочного знака оба раза, как в части поиска, так и в замене команды. Пример поможет лучше проиллюстрировать это:

 $cat test.txt a(bc) a(l) a(d) a(loke) a(babab) a(h323) $ 

Я хочу добавить строку, _mynewstring , к тому, что приходит после a([string of some length] . Обратите внимание, что я не могу просто найти и заменить закрывающую скобку, потому что в каждой строке есть другие закрывающие круглые скобки (которые я оставляю для простоты примера), но ни один, у которого парная открывающая скобка имеет перед a переднюю часть. Результат должен выглядеть так:

 $cat test.txt a(bc_mynewstring) a(l_mynewstring) a(d_mynewstring) a(loke_mynewstring) a(babab_mynewstring) a(h323_mynewstring) $ 

Я попробовал следующее,

 sed -i 's/a(.*)/a(.*_mynewstring)/g' test.txt 

но это только выдает,

 cat test.txt a(.*_mynewstring) a(.*_mynewstring) a(.*_mynewstring) a(.*_mynewstring) a(.*_mynewstring) a(.*_mynewstring) 

Очевидно, что подстановочный знак берется как буквальная строка, что не то, что мне нужно, но после исчерпывающего Googling я не уверен, как бы я это сделал иначе. Я попытался awk проблемы с использованием awk , grep и комбинаций из всех трех безрезультатно. Спасибо за любую помощь, которую вы можете предоставить.

One Solution collect form web for “Найти и заменить с помощью sed с помощью подстановочных знаков при поиске и замене”

Побег ( и поиск не ) . Используйте \1 чтобы сохранить согласованную группировку.

 sed 's/a\(([^)]*\))/a\1_mynewstring)/g' file1 

дает:

 a(bc_mynewstring) a(l_mynewstring) a(d_mynewstring) a(loke_mynewstring) a(babab_mynewstring) a(h323_mynewstring) 
  • Частично удалить форматирование из текста в буфер обмена
  • присоединяйте два файла на основе столбца, когда в сценарии bash нет взаимно однозначного соответствия (awk, grep, sed)
  • Лучше, чем `tee | разрезать | ... | paste`
  • Ввод файла для оператора select в командной строке
  • grep -A с обратной совпадением распечатывает только несоответствие в поле после
  • sed -e 's / ^ //' не работает для первой строки
  • Как копировать и вставлять строки между ключевым словом start и end?
  • Как получить код выхода grep, но распечатать все строки?
  • Управление дублированными строками в файлах
  • захватить текст из файла vtt
  • Сокращение порядка и вывод текста
  • Как удалить команды в истории, соответствующие заданной строке?
  • Interesting Posts

    Загрузочный USB-накопитель, не являющийся съемным устройством

    Cinnamon 2.2 Как добавить пользовательский shortuct: переместить рабочее пространство вверх

    FVWM HowTo Swallow?

    Как заменить пробелы в именах файлов с помощью подчеркивания

    Где разместить исходный код для приложений, скомпилированных из исходного кода?

    Как избежать зависания при разрешении имени IPv6

    Как заставить дерево выводить только каталоги?

    Сдвижная анимация рабочей области в i3

    Удалить родительскую папку, сохраняющую все содержимое

    Семантика дедупликации с btrfs – метаданные различаются, данные файлов идентичны

    «Bad flag в команде substitute:« {»при замене строки sed из одного файла в другой файл

    Как изменить идентификатор устройства PCI моей видеокарты в системе? (для установки драйвера Quadro на GeForce)

    Закрытие окна GUI из командной строки

    Как выбрать строку с последней датой и временем

    Как переключиться с bash на zsh?

    Linux и Unix - лучшая ОС в мире.