如何通过 bash 删除文本/csv 文件中 EOF 之前的换行符

如何通过 bash 删除文本/csv 文件中 EOF 之前的换行符

txt下面是我在或文件中收到的数据的示例csv(见EmEditor):

问题数据

但是,将这些数据上传到我的软件时,最后的空白行会导致问题。我需要让数据如下所示。

修正数据

任何人都可以编写代码来删除最后一行命令并将文件末尾命令移动到最后一行吗?

答案1

有多种方法可以做到这一点。

printf

printf "%s" "$(<file)"

使用perl(用于-i就地编辑文件):

perl -pe 'chomp if eof' file

或者使用head(如果您确定最后一个字符是换行符):

head -c -1 file

答案2

你可以试试这个

sed 'N; $ s/\n//; P; D;' file

答案3

这也应该可以解决问题,并且更具可读性(在我偏向 awk 的观点中):

 awk '{ if ( NR == 1) { printf("%s",$0); } else { printf("\n%s", $0); }}' file

答案4

awk

awk 'NR > 1 { print prev } { prev = $0 }' file

或与sed

sed '$d' file

相关内容