私の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