将多个相同的字符分成各自的行

时间:2014-08-18 20:01:24

标签: regex sed

我试过这个

sed -r "s/]]/]\n]/g" testfile.txt

但我觉得它不起作用。

我正在尝试做什么:

[[[sometext

将是

[
[
[sometext

[[[[[[[[sometext

将是

[
[
[
[
[
[
[
[sometext

3 个答案:

答案 0 :(得分:1)

使用grep -o比使用sed容易得多:

s='[[[[[[[[sometext'

grep -o '\[[^[]*' <<< "$s"
[
[
[
[
[
[
[
[sometext

如果您必须使用sed,请使用:

sed 's/\[[^[]*/&\n/g' <<< "$s"
[
[
[
[
[
[
[
[sometext

答案 1 :(得分:1)

以下是awk版本:

echo "[[[[[[[[sometext"  | awk -v RS="[" 'NR>1{$1=$1;print RS$0}'
[
[
[
[
[
[
[
[sometext

答案 2 :(得分:0)

输入:

[[[[[sometext

模式

/(\[)(?=\[.*?)/g

替换

\1\r\n

输出:

[
[
[
[
[sometext

Demo

使用sed

sed -r 's/(\[)(?=\[.*?)/\1\r\n/g' file.txt