【发布时间】:2021-12-07 00:37:56
【问题描述】:
我在 RHEL 6.10 中使用了这个垃圾字符过滤命令,它运行良好。
sed 's/[^][A-Za-z0-9\^`~!@#$%&*|\,:;{}()+=_-./ "<>?\/\\]//g'
但是,在 RHEL 8.3 中会发生以下错误。
sed: -e expression #1, char 54: Invalid range end
非常感谢任何建议
【问题讨论】:
-
这能回答你的问题吗? Hyphen and underscore not compatible in sed
-
-必须位于括号表达式的开头或结尾。您还需要删除除一个/之外的所有转义符(注意您有一个未转义的/)。您不需要在 POSIX 括号表达式内双重转义\。 -
我试过了,它会从我们不想要的目标文件中删除
-。例如:日期 2021-10-17,我们不想删除- -
不,
's/[^][A-Za-z0-9^`~!@#$%&*|,:;{}()+=_. "<>?\/\-]//g'不会删除连字符。但我现在想,你只想保留字母数字和标点符号,对吧?试试s/[^[:alnum:][:punct:]]//g -
不起作用。
's/[^][A-Za-z0-9^`~!@#$%&*|,:;{}()+=_. "<>?\/\-]//g'将使整个文件无效。