UNIX sed命令我尝试用一个换行符\n
替换字符#
:为逃脱的字符
sed -e "s/#/\n/g" > file.txt
能正常工作。
现在有与焦炭#
,当逃脱-
问题:
例如:123#456-#789#777应该是:
456#789
转义字符-
本身也可以被转义: 如:123#456-#789--012#777应该是:
456#789-012
我该怎么用sed做这个?
UNIX sed命令我尝试用一个换行符\n
替换字符#
:为逃脱的字符
sed -e "s/#/\n/g" > file.txt
能正常工作。
现在有与焦炭#
,当逃脱-
问题:
例如:123#456-#789#777应该是:
456#789
转义字符-
本身也可以被转义: 如:123#456-#789--012#777应该是:
456#789-012
我该怎么用sed做这个?
$ echo "123#456-#789#777" | sed 's/\([^-]\)#/\1\n/g;s/-\(.\)/\1/g'
123
456#789
777
$ echo "123#456-#789--012#777" | sed 's/\([^-]\)#/\1\n/g;s/-\(.\)/\1/g'
123
456#789-012
777
$ echo "#123#456-#789#777" | sed 's/\(^\|[^-]\)#/\1\n/g;s/-\(.\)/\1/g'
123
456#789
777
$ echo "#1###2-#3--4#5#" | sed "s/\([^-]\)##/\1#\n/g;s/\(^\|[^-]\)#/\1\n/g;s/-\(.\)/\1/g"
1
2#3-4
5
$
第一部分是保留-<any chars>
和转换#
(不包括前面的-
)来换行,第二部分是-<any chars>
转换为只<any chars>
(如果你不需要这样的通配符,我想你知道如何只修改-
和#
。)
sed -e“s /([^ - ])#/ \ 1 \ n/g; s/-/-/g; s/- #/#/ g “
这只是逃避 - 和 - #虽然。
$ echo "123#456-#789--012#777" | awk -F"#" '{print $1;for(i=2;i<NF-1;i++){printf "%s#",$i};print $(NF-1);print $NF}'
123
456-#789--012
777
$ echo "123#456-#789#777" | awk -F"#" '{print $1;for(i=2;i<NF-1;i++){printf "%s#",$i};print $(NF-1);print $NF}'
123
456-#789
777
怎么回声“#123#456-#789#777”| sed's/\\([^ - ] \\)#/ \ 1 \ n/g; s/- \\(。\\)/ \ 1/g' – gert 2010-10-04 11:16:47
@newGuest, 123' ?然后sed's/\\(^ \ | [^ - ] \\)#/ \ 1 \ n/g; s/- \\(。\\)/ \ 1/g'就是您想要的。 – livibetter 2010-10-04 11:21:25
新行可以在那里 - 但这不工作:echo“1 ## 2#3”| sed“s/\\(^ \ | [^ - ] \\)#/ \ 1 \ n/g; s/- \\(。\\)/ \ 1/g” – gert 2010-10-04 11:29:07