我的.csv文件末尾有一个para break。我尝试使用以下命令删除文件末尾的空白行。
sed -i '/^$/d' combined.csv
但它不起作用,仍然有一个空行。我可以使用以下命令删除最后一行。
sed -i '$d' combined.csv
但是在删除它之前是否可以检查最后一行是否真的是空的?
更新
我使用以下命令检查每行是否以数字开头。
sed -i '1s/^[^0-9]*//' combined.csv
这仅检查第一行而不是其余行。如何检查文件中的所有行?这可能会解决我的问题。
答案 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 | ...