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