删除最后一个空行

时间:2010-12-15 10:16:01

标签: sed awk grep

我的.csv文件末尾有一个para break。我尝试使用以下命令删除文件末尾的空白行。

sed -i '/^$/d' combined.csv

但它不起作用,仍然有一个空行。我可以使用以下命令删除最后一行。

sed -i '$d' combined.csv

但是在删除它之前是否可以检查最后一行是否真的是空的?

更新

我使用以下命令检查每行是否以数字开头。

sed -i '1s/^[^0-9]*//' combined.csv

这仅检查第一行而不是其余行。如何检查文件中的所有行?这可能会解决我的问题。

5 个答案:

答案 0 :(得分:21)

尝试${/^$/d;}如果它是文件的最后一行,则只会匹配一个空行。

更新:对于你的第二个问题,只需删除s之前的1,即:sed -i 's/^[^0-9]*//' combined.csv

答案 1 :(得分:7)

在某个地方找到了这个年代并保存了片段。不要问我它是如何工作的:

perl -i -pe "chomp if eof" combined.csv

答案 2 :(得分:1)

要删除空白行,您可以使用grep .sed '/^$/d'

它将删除文件中的任何空白行。我希望你的档案中间没有任何空白行,但这可以适用于你的情况。

cat combined.csv | grep .

cat combined.csv | sed '/^$/d'

答案 3 :(得分:0)

  

尝试$ {/ ^ $ / d;}这只会匹配一个空行,如果它是文件的最后一行。

我尝试使用 sed(GNU sed)4.2.2 并删除所有空行,如果它是文件的最后一行,则不仅删除空行。

我找到了以下命令,这对我自己有效。

sed -e :a -e '/^\n*$/{$d;N;ba' -e '}'

此命令来自有用的SED-Oneliners集合: http://sed.sourceforge.net/sed1line.txt

答案 4 :(得分:0)

如果您确定最后一行是,那么只需使用:...| head -n -1 | ...