从分隔符中剥离输出并将所有内容放在新行上

时间:2015-02-01 21:17:11

标签: regex bash awk sed

我的数据看起来像这样(当然我有GB的数据)

[[1,2,3],[4,5,6],[5,6,7],[8,9,10]]

并且它都是在一个文件上输出的。

我想知道是否可以使用正则表达式,awksedgrep或纯bash来管道输出,所以我让它显示为

1,2,3
4,5,6
5,6,7
8,9,10

2 个答案:

答案 0 :(得分:2)

使用sed:

echo '[[1,2,3],[4,5,6],[5,6,7],[8,9,10]]' | sed 's/\],\[/\n/g;s/\[\|\]//g'

这包含两个命令

s/\],\[/\n/g   # replace all instances of ],[ with newlines
s/\[\|\]//g    # remove remaining [ and ] (at the beginning and end)

答案 1 :(得分:1)

您可以使用awk

echo "[[1,2,3],[4,5,6],[5,6,7],[8,9,10]]"|awk  -v OFS="\n" '{gsub(/(\],\[|\]\]|\[\[)/," ");for(i=1;i<=NF;++i){print $i}}'

结果

1,2,3
4,5,6
5,6,7
8,9,10