我想知道你是否可以帮助我在这里尝试替换脚本......
我有这样的事情:
aaaaaa,aaaaa,aaaaa,aaaa,aaaaa,aaa,aaa,aaa,aaaa,aaa
aaaa,aaaaa,aaaaa,aaaaaaa,aaa[1,2], aaaaaaaa[5,6], aaaa,aaaaaaa
并希望订购文件以获得类似:
aaaaaa,
aaa,
aaaaa,
aaaaa[1,2],
aaaaaaaa[5,6],
aaaaa,
aaaaaaaa,
aaaa
我尝试用换行符替换,
,但它也会分隔[n,n]
块。
还尝试用换行符替换,[^0-9]
,但是我在逗号后面放了第一个字符。
我一直在尝试sed,但我不确定这会是什么样子。
我添加了一个文件样本:
x0.fieldB [1,2] ,x5.fieldC ,x0.fieldX ,x0.fieldA
(x0.fieldE [1,5] = x2.fieldZ) ) AND (x0.fieldG [1,2] = x3.fieldT ) )
应该得到这样的东西:
x0.fieldB [1,2] ,
x5.fieldC ,
x0.fieldX ,
x0.fieldA (x0.fieldE [1,5] = x2.fieldZ) ) AND (x0.fieldG [1,2] = x3.fieldT ) )
答案 0 :(得分:1)
为了不丢失该数字,您需要使用(转义)括号捕获它,然后将其替换为\1
,如下所示:
sed 's/\([^0-9]\),/\1\n/g' yourfile
答案 1 :(得分:0)
快速而肮脏的修复:使用enter替换和<]&gt ;.
答案 2 :(得分:0)
以下是一个适合您案例的解决方案:
sed -e 's;\([A-Za-z \t]\),;\1,\n;g' -e 's;],;],\n;g'
它的作用是在范围A-Z或a-z中的任何字符或空格后替换逗号。然后替换所有],
次出现。似乎完全按照自己的意愿行事。我不是regexp
或sed
专家,最有可能写得更好,所以不要怪我: - )