bashを介してtext / csvファイルからEOFの前の改行を削除する方法

bashを介してtext / csvファイルからEOFの前の改行を削除する方法

txt以下は、orファイルから受信したデータの例です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 '{ 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

関連情報