【问题标题】:How to remove with awk/sed the characters that show up as SUB in Notepad++如何使用 awk/sed 删除 Notepad++ 中显示为 SUB 的字符
【发布时间】:2014-07-17 01:23:50
【问题描述】:

我有一个文件,在 Notepad++ 中打开时包含一些显示为SUB 的字符。我可以通过简单地在 Notepad++ 中进行查找和替换来删除它们。

有没有办法使用 awk 或 sed 做同样的事情?

编辑:根据@konsolebox 的建议,我正在添加该行的十六进制转储:

00000000  35 38 32 37 7e 45 44 20  1a 6c 65 63 0a           |5827~ED .lec.|

冒犯的角色是1a

【问题讨论】:

  • 是的,但您需要告诉我们哪些字符 Notepad++ 决定显示为 SUB
  • @EdMorton:我怎么知道?
  • 阅读Notepad++ 手册页?或者,假设 Notepad++ 是某种文本编辑器,在其中打开您的文件并在其他文本编辑器中打开它(或在 UNIX 中使用 cat -v)并查看差异。
  • @EdMorton: cat -v 将这些字符显示为^Z
  • OK,那么它们就是 control-Z 并且很容易被移除。我会发布一个答案。

标签: awk sed notepad++


【解决方案1】:

如果是 CTRL-Z (0x1A),那么你可以:

sed 's|\x1a||g' your_file.txt

或就地

sed -i 's|\x1a||g' your_file.txt

或使用tr:

tr -d '\032' your_file.txt

【讨论】:

    【解决方案2】:
    sed 's/^Z//g' file
    

    其中^Z 表示同时按住ctrlz 键时获得的Control-Z 字符。您可能需要在 Control-Z 之前键入 Control-V 以禁用它启动的任何操作。

    $ cat -v file
    a^Zb
    $
    $ sed 's/^Z//g' file | cat -v
    ab
    $
    $ sed 's/[[:cntrl:]]//g' file | cat -v
    ab
    

    最后一个将删除所有控制字符。

    【讨论】:

      猜你喜欢
      • 2016-09-05
      • 2011-12-21
      • 2019-04-01
      • 2018-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-27
      • 1970-01-01
      相关资源
      最近更新 更多