用于搜索和替换在模式2之前发生的模式1的Sed

时间:2016-09-14 08:08:27

标签: sed

我的文件包含如下数据

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

我想评论Primary行,并删除在关键字,之前发生的primary。我想添加多行注释直到主键定义结束

输出:

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

2 个答案:

答案 0 :(得分:0)

试试这个:

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

说明:

  • N:在模式空间中添加下一行
  • s/, *\n *Primary/\n#Primary/:从模式空间的第一行删除尾随,,并在第二行将Primary替换为#Primary

答案 1 :(得分:0)

这很有效。保留捕获的组允许重新注入换行。

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