我发现这是为了删除脚本How to remove trailing whitespaces with sed?结尾的空格,但它并没有完全达到我的期望。当我想到删除所有白色时,我想做的是删除所有空行-我认为这个sed
只是删除空格和制表符,但它可以扩展到从文件末尾删除任何空行吗?也许这是不可能做到这一点与一行,也许有更好的方法来实现这一点,任何选择都是伟大的。
另外,我认为这应该用更改替换文件,这对吗?我只是不确定我的测试是否会发生这种情况。
sed -i 's/[ \t]*$//' ~/.bashrc
# -i is in place, [ \t] applies to any number of spaces and tabs before the end of the file "*$"
2条答案
按热度按时间0dxa2lsx1#
删除文件末尾的所有空格:
要就地更改文件,请执行以下操作:
将文件末尾的所有空格替换为一个换行符:
要就地更改文件,请执行以下操作:
Perl单行程序使用以下命令行标志:
-e
:告诉Perl在行内查找代码,而不是在文件中。-p
:一次循环输入一行,默认情况下将其分配给$_
。在每次循环迭代后添加print $_
。-i.bak
:就地编辑输入文件(覆盖输入文件)。在覆盖之前,通过在其名称后附加扩展名.bak
来保存原始文件的备份副本。-0777
:Slurp文件完整。\s+\z
:字符串(恰好是整个文件)末尾的一个或多个空格字符(包括换行符)。正则表达式使用这个修饰符:
/m
:允许多行匹配。另见:
perldoc perlrun
:如何执行Perl解释器:命令行开关perldoc perlre
: Perl regular expressions (regexes)6gpjuf902#
这可能对你有用(GNU sed):
将空行附加到前一行。
如果空行是最后一行,则删除当前模式空间。
否则打印图案空间。
要从所有行的末尾也删除空格,请执行以下操作:
或: