固定長ファイルの問題

固定長ファイルの問題

固定長ファイルの少数のレコードが2つのレコードに分割されます。ファイルは次のようになります。 3番目のレコードは2つのレコードに分割されます。最後から「\r」を削除し、4行目を上に移動して3行目とマージするにはどうすればよいですか?

サンプルファイル:

Firstrow\n
Secondrow\n
Third\r\n
Row\n
Fourthrow\n
Fifthrow\n

望ましい最終結果:

Firstrow\n
secondrow\n
Thirdrow\n
Fourthrow\n
Fifthrow\n

答え1

努力する

sed '/\r/{N; s/\r\n//}' file

答え2

awkを使用すると、行に基づいて出力レコード区切り文字を使用できます。

awk '{ORS = sub(/\r$/,"") ? "" : RS};1' file > temp && mv temp file

または、Perl を使用して CRLF ペアを削除します。

$ perl -pi -e 's/\r\n//' file

関連情報