我想编写一个删除最后一个逗号的sed语句。
DROP TABLE IF EXISTS person;$
CREATE TABLE person ($
id int(11) NOT NULL,$
name varchar(500) DEFAULT NULL,$
gender char(1) DEFAULT NULL,$
birthdate date DEFAULT NULL,$
deathdate date DEFAULT NULL,$
height int(11) DEFAULT NULL,$
) ;$
代码段来自vim with:set list
想要的输出是
DROP TABLE IF EXISTS person;$
CREATE TABLE person ($
id int(11) NOT NULL,$
name varchar(500) DEFAULT NULL,$
gender char(1) DEFAULT NULL,$
birthdate date DEFAULT NULL,$
deathdate date DEFAULT NULL,$
height int(11) DEFAULT NULL$
) ;$
我试着这样做
sed -e 's@,$)@$)@'
但不匹配
答案 0 :(得分:4)
sed
一次处理一行输入。您需要将下一行附加到当前行,执行替换并打印模式空间:
sed 'N;s/,\n)/\n)/;P;D' inputfile
对于您的样本输入,这将产生:
DROP TABLE IF EXISTS person;
CREATE TABLE person (
id int(11) NOT NULL,
name varchar(500) DEFAULT NULL,
gender char(1) DEFAULT NULL,
birthdate date DEFAULT NULL,
deathdate date DEFAULT NULL,
height int(11) DEFAULT NULL
) ;
答案 1 :(得分:0)
答案 2 :(得分:0)
这可能适合你:
awk -v RS="" '{gsub(/,\n\)/,"\n)")}7' file