ファイルに改行文字がありますか?

ファイルに改行文字がありますか?

私のdosファイルはデフォルトでCRLFを改行として使用します。しかし、時にはCRLFの代わりにLFを取得します。改行文字が正確にどこに現れるかを調べる必要があります。そして、LFをCRLFに変更したくありません。改行で記録された変更を表示するには

ベストアンサー1

次の簡単な例を見てください。

$ cat -et file
122323432.....^M$
4354363645....^M$
45234564655...$
34r52435346...^M$
122323432.....^M$

cat -et行末を表示するために使用されます)

$ awk '{last = $0} NR==1 {cr = /^M$/ ? 0 : 1; next} cr == 0 && /^M$/ {print last; cr = 1} cr == 1 && !/^M$/ {print last; cr = 0}' file | cat -et
4354363645....^M$
45234564655...$
34r52435346...^M$

たとえば、^M実際のCR文字入力として+を使用します。CtrlV Enter


以下は多少文字通り翻訳しようとしますpython

#!/usr/bin/python3

import re

p = re.compile(r'.*\r$')

with open('file', 'r', newline='') as f:
    for idx, line in enumerate(f):
        last = line
        m = p.match(line)
        if (idx==0):
            cr = 0 if m else 1
        if (cr==0) and m:
            print(last, end='')
            cr = 1
        elif (cr==1) and not m:
            print(last, end='')
            cr = 0

おすすめ記事