【问题标题】:Replacing multiple special characters from a file with a perl one-liner用 perl 单行替换文件中的多个特殊字符
【发布时间】:2013-12-02 10:12:23
【问题描述】:

我正在尝试从文件中替换一些特殊字符(Ascii characters 1,5,7,23,26,30)。 我想用单线做,所以我尝试使用以下方法。

perl -pi -e 's/([\x1 \x5 \x7 \x17 \x1a \x1e])//eg' dummy.txt

它可以很好地替换特殊字符,但我看到文件中也删除了一些空格。例如:1257 ST 02 BW 变为 1257ST02BW。 如果我像下面这样单独为单个字符编写替换,则不会发生这种情况:

perl -pi -e 's/([\x1])//eg' dummy.txt
perl -pi -e 's/([\x3])//eg' dummy.txt
.....
.....
perl -pi -e 's/([\x1e])//eg' dummy.txt

谁能帮帮我。

【问题讨论】:

  • 尝试使用/xg而不是/eg

标签: regex perl unix replace special-characters


【解决方案1】:

试试,

perl -pi -e 's/[\x1\x5\x7\x17\x1a\x1e]//g' dummy.txt

perl -pi -e 'tr/\x1\x5\x7\x17\x1a\x1e//d' dummy.txt

你在 char 类定义中包含了空格,所以它们被删除了。

【讨论】:

    猜你喜欢
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 2010-12-25
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    相关资源
    最近更新 更多