2016-09-14 2 views
0

У меня есть файл, который содержит данные, как показано нижеSed для поиска и замены рисунка 1, который происходит до того рисунка 2

Create table (
col1 int, 
col2 string, 
Primary key (Col1, 
col2) 
) 

Я хочу комментировать Primary строки и удалить ,, которое происходит перед ключевым словом primary. и я хочу, чтобы добавить многострочный комментарий до конца первичного определения ключа

Выход:

Create table (
col1 int, 
col2 string 
#Primary key (Col1, 
#col2) 
) 

ответ

0

Попробуйте это:

sed 'N;s/, *\n *Primary/\n#Primary/' file  

Объяснение:

  • N: добавляет следующая строка к шаблону пространство
  • s/, *\n *Primary/\n#Primary/: удаляет конечные , из первой строки шаблона и заменить Primary с #Primary на второй линии
+0

Wow !!! это сработало. Большое спасибо –

+0

Но я не уверен, существует ли \ n между двумя последними скобками. Мне нужно \ n после ')', которое происходит только после ключевого слова PRIMARY, как я могу это достичь? –

+0

Измените свой вопрос, чтобы добавить пример кода. – SLePort

0

Это работает. Сохранение захваченных групп позволяет повторно вводить перевод строки.

$ sed 'N;s/, *\(\n\)\(Primary key\)/\1#\2/' input.txt 
Create table (
col1 int, 
col2 string 
#Primary key (Col1) 
)