从定界符中剥离输出并将所有内容放在新行上
Stripping output from delimiters and placing all on new line
我有这样的数据(自然有 GB 的数据)
[[1,2,3],[4,5,6],[5,6,7],[8,9,10]]
并且它全部输出到一个文件中。
我想知道是否可以使用正则表达式 awk
、sed
、grep
或纯 bash 来管道输出,所以我明白了如此出现
1,2,3
4,5,6
5,6,7
8,9,10
使用 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)
你可以使用 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
我有这样的数据(自然有 GB 的数据)
[[1,2,3],[4,5,6],[5,6,7],[8,9,10]]
并且它全部输出到一个文件中。
我想知道是否可以使用正则表达式 awk
、sed
、grep
或纯 bash 来管道输出,所以我明白了如此出现
1,2,3
4,5,6
5,6,7
8,9,10
使用 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)
你可以使用 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