用空格替换制表符的Perl程序
我想编写一个Perl one liner,将当前目录中一批文本文件中的所有制表符“\t”替换为空格,而不影响可见间距用空格替换制表符的Perl程序,perl,text,file,replace,Perl,Text,File,Replace,我想编写一个Perl one liner,将当前目录中一批文本文件中的所有制表符“\t”替换为空格,而不影响可见间距 有人能告诉我怎么做吗?perl-p-i-e的/\t//g'file.txt将是实现这一点的一种方法您不需要perl单行程序,您可以使用: $ perl -wp -i.backup -e 's/\t/ /g' * 扩展实用程序应将文件或标准输入写入标准输出,并用一个或多个字符替换字符,以填充到下一个制表位 expand实用程序甚至可以为您管理制表位,这似乎是“对可见间距没有
有人能告诉我怎么做吗?
perl-p-i-e的/\t//g'file.txt将是实现这一点的一种方法您不需要perl单行程序,您可以使用:
$ perl -wp -i.backup -e 's/\t/ /g' *
扩展实用程序应将文件或标准输入写入标准输出,并用一个或多个字符替换字符,以填充到下一个制表位
expand
实用程序甚至可以为您管理制表位,这似乎是“对可见间距没有影响”要求的一部分,Perl one liner可能不会(但我打赌这里有人可以提供一个one liner)。这是:
或者您可以只使用Text::Tabs
模块(标准Perl发行版的一部分)
使用。以下内容仅从文档中稍作修改:
perl -MText::Tabs -n -i.orig -e 'print expand $_' *
您可以使用s//
来实现这一点。也许您有一行文本存储在$line中:
$line =~ s/\t/ /g;
这将用四个空格替换每个选项卡(\t
)。这只取决于一个选项卡在文件中有多少空间
这里有一些东西可以很快帮你完成;按你的意愿编辑它
open(FH, 'tabz.txt');
my @new;
foreach my $line (<FH>) {
$line =~ s/\t/ /g; # Add your spaces here!
push(@new, $line);
}
close(FH);
open(FH, '>new.txt');
printf(FH $_) foreach (@new);
close(FH);
open(FH,'tabz.txt');
我的@new;
foreach我的$line(){
$line=~s/\t//g;#在此处添加空格!
推送(@new$line);
}
关闭(FH);
打开(FH,'>new.txt');
每小时打印费(FH$)(@new);
关闭(FH);
在regexp的replace部分,您可能需要比replace部分更多的空间,但如果您有一个expand实用程序可以做到这一点,那也没关系!我想你是在Unix世界:在Windows中,expand.exe做了一些完全不同的事情。谢谢!我对其进行了调整,以将文件规范化为unix行结尾,并消除尾随空格:perl-MText::Tabs-ni-e的/\s*$/;s/\s*\r/\n/g;打印扩展$\“\n”
$line =~ s/\t/ /g;
open(FH, 'tabz.txt');
my @new;
foreach my $line (<FH>) {
$line =~ s/\t/ /g; # Add your spaces here!
push(@new, $line);
}
close(FH);
open(FH, '>new.txt');
printf(FH $_) foreach (@new);
close(FH);