如何使用 Perl 从文件末尾删除换行符
How to remove newline from the end of a file using Perl
我有一个文件,内容如下:
dog cat mouse
apple orange pear
red yellow green
有一个制表符 \t
分隔每一行的单词,还有一个换行符 \n
分隔每一行。由于在 green
之后换行 \n
,所以在最后一行 red yellow green
下面有一个空行。
我想使用 Perl 来删除换行符。
我看过一些类似 How can I delete a newline if it is the last character in a file? 的文章,它们给出了 Perl 的解决方案,但我想用硬代码来完成,这样我就可以将它合并到我的 Perl 脚本中。
我不知道这是否可能使用 chomp,或者 chomp 是否分别在每一行上工作(我想在行之间保留换行符)。
我之前也看到过建议在文件末尾保留一个换行符的评论,因为当文件以换行符结尾时 Unix 命令工作得更好。但是,我创建了一个脚本,它依赖于不以换行符结尾的输入文件,因此我真的觉得删除换行符对我的工作是必要的。
你可以试试这个:
perl -pe 'chomp if eof' file.txt
这是另一种简单的方法,如果您需要在脚本中使用它:
open $fh, "file.txt";
@lines=<$fh>; # read all lines and store in array
close $fh;
chomp $lines[-1]; # remove newline from last line
print @lines;
或类似这样的东西(在脚本中),如 jnhc 对命令行的建议:
open $fh, "file.txt";
while (<$fh>) {
chomp if eof $fh;
print;
}
close $fh;
我有一个文件,内容如下:
dog cat mouse
apple orange pear
red yellow green
有一个制表符 \t
分隔每一行的单词,还有一个换行符 \n
分隔每一行。由于在 green
之后换行 \n
,所以在最后一行 red yellow green
下面有一个空行。
我想使用 Perl 来删除换行符。
我看过一些类似 How can I delete a newline if it is the last character in a file? 的文章,它们给出了 Perl 的解决方案,但我想用硬代码来完成,这样我就可以将它合并到我的 Perl 脚本中。 我不知道这是否可能使用 chomp,或者 chomp 是否分别在每一行上工作(我想在行之间保留换行符)。
我之前也看到过建议在文件末尾保留一个换行符的评论,因为当文件以换行符结尾时 Unix 命令工作得更好。但是,我创建了一个脚本,它依赖于不以换行符结尾的输入文件,因此我真的觉得删除换行符对我的工作是必要的。
你可以试试这个:
perl -pe 'chomp if eof' file.txt
这是另一种简单的方法,如果您需要在脚本中使用它:
open $fh, "file.txt";
@lines=<$fh>; # read all lines and store in array
close $fh;
chomp $lines[-1]; # remove newline from last line
print @lines;
或类似这样的东西(在脚本中),如 jnhc 对命令行的建议:
open $fh, "file.txt";
while (<$fh>) {
chomp if eof $fh;
print;
}
close $fh;