замена строки с помощью SED - PullRequest
       3

замена строки с помощью SED

0 голосов
/ 10 декабря 2010

Я пытаюсь заменить некоторые функции с помощью SED.Допустим, у меня есть какая-то функция с именем

AAAABBBB ()

, и мне нужно изменить это значение на

CCCC (nBBBB)

% BBBB <- это может быть любая длина, но AAAA, CCCC, n имеют фиксированную длину. </p>

Как я могу сделать это с помощью SED?или даже используя другой метод?

Спасибо

Ответы [ 4 ]

2 голосов
/ 10 декабря 2010

Вот быстрый:

 echo "AAAABBBB()" | sed -e 's/AAAA\(.\+\)()/CCCC(n\1)/'
 CCCC(nBBBB)

 echo "AAAAFF()" | sed -e 's/AAAA\(.\+\)()/CCCC(n\1)/'
 CCCC(nFF)

Идея довольно проста: сопоставьте строку AAAA, затем захватите буквы B в обратной ссылке (1 или более).Теперь замените это парой Си и обратным ссылкам.То же самое касается и другой буквы.

Кстати, вам лучше привести несколько конкретных примеров.В противном случае мы могли бы не набрать точно точно на замену, которую вы хотите.

0 голосов
/ 10 декабря 2010
sed 's/AAAA\([^(]*\)()/CCCC(n\1)/'
0 голосов
/ 10 декабря 2010

Вы не предоставляете достаточно информации для создания очень избирательного шаблона (при условии, что есть функции, которые вы не хотите переименовать), но если вы хотите переименовать все так:

sed -e 's/^\(....\)\(.*\)()/\1(n\2)/'

Это превращает 4 символа в начале строки (AAAA), за которыми следует BBBB любой длины, в AAAA (nBBBB). Я не уверен, откуда вы ожидали получить CCCC?

0 голосов
/ 10 декабря 2010
sed -r 's/^A+([^A]+)\(\)/CCCC(n\1)/'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...