ファイルの各行から最初の^ Mを削除します。

ファイルの各行から最初の^ Mを削除します。

データは2行目から始まります。 最初のインスタンスを削除する単純なスクリプトまたはユーティリティはありますか?^m データ行あたり?

この質問は、次のように書き直すこともできます。^m2番目(偶数)インスタンスをすべて削除する方法は?興味深くスマートな答えをお楽しみください。 Ubuntuや同様の環境が望ましいです。

ここに画像の説明を入力してください。

生データは賢く切り取り、貼り付け、解析できます。

Date,From,To,Flight_Number,Airline,Distance,Duration,Seat,Seat_Type,Class,Reason,Plane,Registration,Trip,Note,From_OID,To_OID,Airline_OID,Plane_OID^M
- -,JFK,OTBD,American Airlines (AA),American Airlines,6687,13:52,,,,,777^M,,,"Direct",3797,2241,24^M
- -,JFK,OTBD,Qatar Airways (QR),Qatar Airways,6687,13:52,,,,,77W^M,,,"Direct",3797,2241,4091^M

つまり、この質問をする理由は、予期しない^ mがLibre-Office Calc(スプレッドシート)からインポートの問題を引き起こしたためです。つまり、予想される改行が発生しました。

ここに画像の説明を入力してください。

ベストアンサー1

ファイルをDOS形式(CRLF行の終わり)に維持すると仮定すると、削除できます。みんなCRを入力して行末にもう一度追加します。

だから

tr -d '\015' < srcfile | unix2dos > newfile

詳細な説明を編集:

これ

tr -d '\015'

剥がれるみんなファイルの control-M 文字。 -dtoはtr「削除」を意味し、'\015'8進形式のcontrol-M文字です。

これ

unix2dos

LF文字の前にCR(control-M)を挿入して、LF(改行; control-J;)文字をCRLFに変換します。これにより、unix形式のテキストファイルがDOS形式のテキストファイルに変換されます。

両方を組み合わせると、すべての不良^ Mが削除され、各行の末尾に^ Mのみがあることを確認します。

おすすめ記事