【问题标题】:I'm getting "Invalid range end" for sed command in RHEL 8.3我在 RHEL 8.3 中收到 sed 命令的“无效范围结束”
【发布时间】: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^`~!@#$%&amp;*|,:;{}()+=_. "&lt;&gt;?\/\-]//g' 不会删除连字符。但我现在想,你只想保留字母数字和标点符号,对吧?试试s/[^[:alnum:][:punct:]]//g
  • 不起作用。 's/[^][A-Za-z0-9^`~!@#$%&amp;*|,:;{}()+=_. "&lt;&gt;?\/\-]//g' 将使整个文件无效。

标签: sed scripting rhel


【解决方案1】:

使用这个脚本:

> cat test.txt
$jeden$
#pięć#
!łzy!
> sed 's/[^][A-Za-z0-9^`~!@#$%&*|,:;{}()+=_. "<>?\/\-]//g' test.txt > test2.txt
> cat test2.txt
$jeden$
#pi#
!zy!

所有与否定括号中的字符不同的字符都将从测试文件中删除并安全地保存在 test2 文件中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 2016-09-08
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2014-09-30
    • 2021-06-24
    相关资源
    最近更新 更多