删除最后一个空行

sha*_*nuo 16 awk grep sed

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

sed -i '/^$/d' combined.csv
Run Code Online (Sandbox Code Playgroud)

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

sed -i '$d' combined.csv
Run Code Online (Sandbox Code Playgroud)

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

更新:

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

sed -i '1s/^[^0-9]*//' combined.csv
Run Code Online (Sandbox Code Playgroud)

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

Bar*_*Sas 25

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

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

  • `$ {/ ^ $/d;}`:第一个`$`表示文件的最后一行(您可以将命令限制为行号,$表示最后一行).花括号表示一个块,在块中你删除`/ d;`一个空行`/ ^ $`. (4认同)

elm*_*mmo 8

发现这个很久以前的某个地方并保存了片段.不要问我它是如何工作的:

perl -i -pe "chomp if eof" combined.csv
Run Code Online (Sandbox Code Playgroud)

  • 如果EOF(\n \n)没有空行,这也将删除EOF中的最后一个\n - 在Unix中不应删除. (2认同)
  • @AleksandrLevchuk:好点,但这很容易解决:`perl -pe 'chomp if eof && /^$/' combine.csv` (2认同)