我有一个文件,例如:
ID_SOUR_CALENDAR BIGINT NOT NULL DEFAULT 0 COMPRESS 0 ,
UNIQUE PRIMARY INDEX ( CALENDAR_DATE );
ID ,
ID_SOUR ,
PRIMARY INDEX ( CALENDAR_DATE );
我想将包含 PRIMARY 的行之前的行中的 ',' 替换为 ')'。
结果应该是:
ID_SOUR_CALENDAR BIGINT NOT NULL DEFAULT 0 COMPRESS 0 )
UNIQUE PRIMARY INDEX ( CALENDAR_DATE );
ID ,
ID_SOUR )
PRIMARY INDEX ( CALENDAR_DATE );
使用
GNU sed
:N
将下一行输入读取/附加到模式空间中。P
打印到当前模式空间的第一个嵌入换行符。D
删除模式空间中第一个嵌入的换行符。开始下一个循环,但如果模式空间中仍有数据,则跳过从输入读取。尝试反转文件,在 PRIMARY之后的行上进行字符串替换,然后重新反转文件:
尝试这个,
这将在任何行之前
,
用in 替换最后一行,包括.)
PRIMARY
解释
perl -0777
啜食整个文件(读为一行)s/search_pattern/replacement/g
全局替换搜索模式如果您使用
ed
而不是sed
可以使用带有负偏移量的正则表达式地址:前任。
或(用于就地编辑)
替换将匹配所有实例
/PRIMARY/
- 如果您只想替换第一个,请删除g
修饰符。使用POSIX - ly
sed
您可以执行以下操作:输出:
在职的: