删除每4行末尾的逗号

时间:2015-03-21 11:11:44

标签: linux unix sed

她是输出的一个例子。我需要删除每四行末尾的逗号。

"tester1",
"SERVICE_TICKET_CREATED",
"Thu Mar 19 23:27:57 UTC 2015",
"111.111.11.1"
"tester1",
"SERVICE_TICKET_CREATED",
"Fri Mar 20 00:31:59 UTC 2015",
"111.111.11.1"

我想做的是

"tester1",
"SERVICE_TICKET_CREATED",
"Thu Mar 19 23:27:57 UTC 2015",
"111.111.11.1"
"tester1",
"SERVICE_TICKET_CREATED",
"Fri Mar 20 00:31:59 UTC 2015",
"111.111.11.1"

1 个答案:

答案 0 :(得分:2)

使用GNU sed:

sed '4~4 s/,$//' filename

但是,我必须指出,在您的示例输出中,每四行末尾都没有逗号。

这应该对你有用,因为问题标记为“linux”,Linux几乎总是带有GNU sed。为了完整起见:使用BSD sed(在Mac OS X和* BSD上找到),4~4模式不起作用(它是GNU扩展)。在那里你可以做类似

的事情
sed 'n;n;n;s/,$//' filename

...每次取出并打印三行,并在第四行结束时删除逗号(除非在获取第四行之前到达输入的结尾)。

或者,使用awk可以使用

awk 'NR % 4 == 0 { sub(/,$/, "") } 1' filename