使用SED與空白
回答
問題是有幾個字符在正則表達式中有特殊含義。 ^
是一個起始行錨,[
打開一個字符類,並且(
打開一個捕獲。
您可以通過\Q
前面逃避它在一個Perl字符串中的所有非字母數字,所以你可以放心地使用
s/\Q^[(s3B//
這相當於,比
s/\^\[\(s3B//
爲了完整性,您可以用'\ E'結束引用。 – 2013-05-06 15:27:07
你需要引用的特殊字符:
$ echo "^[(s3B AAA ^[(s3B"|sed 's/\^\[[(]s3B//g'
AAA
$ echo "^[(s3B AAA ^[(s3B" >file.txt
$ perl -p -i -e 's/\^\[[(]s3B//g' file.txt
$ cat file.txt
AAA
我無法得到這個工作, 如果我有一個字符串像^ [(s3BThis是線 ,我想擺脫的人物,我就可以用命令: S/\^[[(] s3B // g – 2013-05-06 14:06:33
我認爲不同之處在於我的文件中沒有任何空格分隔這些字詞 – 2013-05-06 14:11:26
您需要引用以下三個字符:^ [( – piokuc 2013-05-06 14:21:12
在正則表達式‘^’,‘[’和‘(’(和許多其他)是用於特殊正則表達式特徵的特殊字符,如果你正在引用字符本身,你應該在它們之前加上「\」 Cor rect替代reges將是:
$string =~ s/\^\[\(3B//g
如果您要替換所有的出現。
甚至更好:使用'\ Q'和'\ E'_quoting字符來關閉正則表達式magic:$ string =〜s/\ Q^[(s3B \ E //;'我也懷疑'^ [''不只是兩個字符的字符串,而是一個轉義字符 – 2013-05-06 14:55:46
如果更易讀你正在處理ANSI序列(xterm顏色序列,轉義序列),然後^ [不是'^'後跟'[',而是一個不可打印的字符ESC,ASCII代碼0x1B。
要將該字符放入sed表達式,您需要在GNU sed中使用\ x1B,或者參見http://www.cyberciti.biz/faq/unix-linux-sed-ascii-control-codes-nonprintable/。您也可以在Bash行編輯中使用ctrl + v將特殊字符直接插入命令行。
- 1. 如何使用sed將一個空白替換爲空格?
- 2. 強制sed忽略空白空間
- 3. sed重寫離開文件空白
- 4. Sed未能匹配非空白字符與字符分類
- 5. 與空白元
- 6. 與空白
- 7. 與空白
- 8. 使用elasticsearch過濾標籤與空白
- 9. Susbtitution在sed與空間
- 10. 空白空間與框架
- 11. Razor + Html.Raw()與空白?
- 12. 在sed中修剪尖括號內的空白空間
- 13. 如何用空白sed替換一些彩色字符
- 14. 使用sed與陣列
- 15. 何時使用空,空白,空?
- 16. 刪除一段文字,直到使用sed的第一個空白行
- 17. 在一個CSV sed的更換空白(使用W/Postgres的複製命令)
- 18. 我如何使用修改與新行空行SED
- 19. sScrollX使用空白jQuery.datatable
- 20. 如何使用空白
- 21. 如何使用空白
- 22. 空白編碼使用stringByAddingPercentEscapesUsingEncoding
- 23. 使用echo和sed後缺少空行
- 24. 使用clearfix刪除空白空間:
- 25. 使用GridBagLayout/GridBagConstraints添加空白空間
- 26. 額外空白頁與TCPDF
- 27. HTML表格與空白nowrap
- 28. 與空白和同義詞
- 29. 鑽石與內部空白
- 30. 串聯空白與C/C++
您可能需要轉義括號。在他們面前添加一個\並嘗試一下。 – 2013-05-06 13:39:35
你能給我們多一點信息。你爲什麼使用sed和Perl?你能用Perl來做到這一點嗎?你有什麼嘗試?你試過的結果是什麼?它會幫助我們更好地理解你的問題。 – 2013-05-06 14:56:23