使用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. 强制sed忽略空白空间
- 6. 如何使用sed删除空白的未加引号的行?
- 7. sed重写离开文件空白
- 8. Sed未能匹配非空白字符与字符分类
- 9. 与空白
- 10. 与空白
- 11. 与空白元
- 12. 与空白
- 13. 使用elasticsearch过滤标签与空白
- 14. Susbtitution在sed与空间
- 15. 空白空间与框架
- 16. htaccess RewriteCond与空白
- 17. 与CMS CSS空白
- 18. Razor + Html.Raw()与空白?
- 19. 在空白与FPDF
- 20. 在sed中修剪尖括号内的空白空间
- 21. 如何用空白sed替换一些彩色字符
- 22. sed在OS X中用换行符替换空白
- 23. 使用sed与阵列
- 24. 何时使用空,空白,空?
- 25. 如何使用sed或awk检查分隔线上的空白字段
- 26. 删除一段文字,直到使用sed的第一个空白行
- 27. 在一个CSV sed的更换空白(使用W/Postgres的复制命令)
- 28. 如何使用sed或awk删除所有包含空白字段的行?
- 29. 我如何使用修改与新行空行SED
- 30. 空白编码使用stringByAddingPercentEscapesUsingEncoding
您可能需要转义括号。在他们面前添加一个\并尝试一下。 – 2013-05-06 13:39:35
你能给我们多一点信息。你为什么使用sed和Perl?你能用Perl来做到这一点吗?你有什么尝试?你试过的结果是什么?它会帮助我们更好地理解你的问题。 – 2013-05-06 14:56:23