寻求一个RegExp来替换每个第七个逗号\ n

时间:2014-01-14 23:35:28

标签: regex bash sed

我有一个如下所示的列表:

11, 11, 12, 12, "abc", 3, 1, 25, 25, 30, 30, "def", 1, 1, ......

我想改变它看起来像这样:

11, 11, 11, 11, "abc", 3, 1
25, 25, 30, 30, "def", 1, 1
....

所以我想用\ n。

替换每七个逗号

我尝试使用sed,但无法使其工作。任何人都可以给我一个提示吗? 提前致谢

4 个答案:

答案 0 :(得分:4)

试试这个:

sed -e -r 's/(([^,]+,){6}[^,]+), /\1\n/g' 

答案 1 :(得分:1)

这可能适合你(GNU sed):

sed 's/,\s*/\n/7;P;D' file

答案 2 :(得分:0)

你可以用这个:

(([^,]+, ?){7})

并替换为$1\n

不确定sed语法,但这里是表达式:http://regex101.com/r/oH8oK3

答案 3 :(得分:0)

sed 's/, */\^J/7'
# or
sed 's/,[[:blank:]]*/\^J/7'

同时删除尾随空格(或者像tab一样空白)[选项-posix与GNU sed]