我有一个文件是这样的:
dog cat mouse
apple orange pear
red yellow green
有一个制表符 \t
分隔每一行的单词,还有一个换行符 \n
分隔每一行。由于 red yellow green
之后的换行符 \n
,在最后一行 green
下方有一个空行。
我想使用 Perl 删除换行符。
我看过几篇类似 How can I delete a newline if it is the last character in a file? 的文章,它们提供了 Perl 的解决方案,但我想用硬代码来做这件事,这样我就可以将它合并到我的 Perl 脚本中。 我不知道这是否可以使用 chomp,或者 chomp 是否可以分别在每一行上工作(我想在行之间保留换行符)。
我还看到以前的评论建议在文件末尾保留换行符,因为当文件以换行符结尾时,Unix 命令会更好地工作。但是,我创建了一个脚本,它依赖于不以换行符结尾的输入文件,因此我真的觉得删除换行符对于我的工作是必要的。
答案 0 :(得分:2)
你可以试试这个:
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;