用空格替换制表符的Perl程序

dva*_*ria 8 perl text replace file

我想编写一个Perl单行代码,用空格替换当前目录中一批文本文件中的所有选项卡'\ t',对可见间距没有影响.

谁能告诉我怎么做?

Eug*_*ash 23

这是在FAQ中:

1 while $string =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e;
Run Code Online (Sandbox Code Playgroud)

或者您可以只使用该Text::Tabs模块(标准Perl发行版的一部分).

use Text::Tabs;
@expanded_lines = expand(@lines_with_tabs);
Run Code Online (Sandbox Code Playgroud)


mu *_*ort 13

你不需要Perl单线程,你可以使用expand:

扩展程序应写入文件或标准输入到标准输出字符需要垫下一个制表位的一个或多个字符替换.

expand实用程序甚至会为您管理制表位,这似乎是您"对可见间距没有影响"要求的一部分,Perl单行可能不会(但我敢打赌,这里有人可以提供一个-liner那将).

  • 没关系**如果**你有一个*expand*实用程序来做到这一点!我想你是在Unix世界:在Windows*中,expand.exe*做了一些完全不同的事情. (3认同)

Chr*_*sen 6

使用Text :: Tabs.以下内容仅适用于文档:

perl -MText::Tabs -n -i.orig -e 'print expand $_' *
Run Code Online (Sandbox Code Playgroud)


kur*_*der 5

perl -p -i -e 's/\t/ /g' file.txt 将是一种方法来做到这一点