2
A
回答
4
3
用一个替换所有尾随的新行?
$text =~ s/\n+$/\n/;
这使得与一个换行符的文件在最后–如果它有至少一个开始。如果你想让它在那里,即使文件没有,请用\n*
替换\n+
。
对于就地说明书中,这意味着一个班轮:
perl -i -0777 -wpe 's/\n+$/\n/' file.txt
开关的含义Command Switches in perlrun进行说明。
这里是对交换机的总结。请参阅上述文档以获得准确的解释。
-i
更改文件“到位”。请注意,数据仍被复制并使用临时文件。-0777
读取整个文件。-0[oct|hex]
设置$/
的数字,所以无效与-0
-w
使用warnigs。不完全一样use warnings
,但有总比没有好-p
在''
运行的代码依次对文件的每一行,像-n
,然后$_
打印-e
''
之间接下来的执行Perl代码
-E
是相同的,但也使feature S,像say
注意,我们可以通过使用核心O和B::Deparse模块看到的等效代码作为
perl -MO=Deparse -wp -e 1
这将打印
BEGIN { $^W = 1; }
LINE: while (defined($_ = <ARGV>)) {
'???';
}
continue {
print $_;
}
-e syntax OK
表示脚本相当于一个衬垫与-w
和-p
。
1
perl -i -0 -pe 's/\n\n*$/\n/' input-file
1
到目前为止发布的解决方案将您的整个输入文件读入内存,如果您的文件很大,这将是一个问题。这只读取连续的空行到内存中:
awk -i inplace '/./{printf "%s", buf; buf=""; print; next} {buf = buf $0 ORS}' file
以上使用GNU awk进行就地编辑。
相关问题
- 1. 只在行尾替换字符串
- 2. 如何获得随机nubmer +1或-1(只需要它为“+”或“ - ”)
- 3. 要使用哪行结尾/换行符?
- 4. LINQ将不需要的尾随空格放在字符串上
- 5. 需要解析一个字符串直到文件末尾
- 6. 使用作曲家只需要1个文件?
- 7. Mysql返回多行,只需要1
- 8. 在fgets中是否需要换行符?
- 9. 需要将ZIP文件转换为随机文本文件
- 10. 从文件末尾清除2个换行符字符
- 11. Sklearn set_params只需要1个参数?
- 12. TypeError:Init只需要1个位置参数
- 13. 多个接口 - 只需要1的ID
- 14. E488:尾随字符:#### gvim的源文件
- 15. 需要跳过输入文件中的换行字符(\ n)
- 16. 我需要一个JTextArea,它在行的末尾计算该行中的字符
- 17. 执行sed时不需要换行符中的换行符
- 18. 在bat文件的末尾添加一行忽略换行符
- 19. 护尾随功能结果换行符在bash
- 20. 如何在爆炸时删除尾随换行字符
- 21. 尾随的换行符从bash子壳中被截断
- 22. SQL:每个特定时间戳只需要1行
- 23. 在SQL Server中删除多个尾随字符 - Oracle相当于修剪(尾随)
- 24. 替换文件中行尾的空格
- 25. ruby输出到文件导致不需要的换行符
- 26. JSON文件包含不需要的空格和换行符
- 27. 我需要互换2个文件C#
- 28. 需要帮助从文件读取直到行尾
- 29. 需要2个函数在Ajax上运行onLoad - 只有1个工作
- 30. Emacs ediff错误“在文件末尾没有换行符”
没有任何UNIX工具可以进行真正的“就地”编辑,它们都会创建一个临时文件(或者'ed'的内部缓冲区)并用它覆盖原始文件。那是问题吗? –
不,临时文件只要透明即可。我不想处理备份文件。 – Joe