\r\n
たとえば、ファイルから改行(CRLF)が続くすべてのキャリッジリターンを削除したいとします。どうすればいいですか?dos2unix
CRLFをLFに置き換えるため使用できません。以前に存在しなかったtr
項目も置き換えられるため使用できません。どうすればいいですか?\n
\r
答え1
sed ":a;/\r$/{N;s/\r\n//;b a}"
'\r'
これは最後に(後に)があるすべての行と一致します'\n'
。その行では、最初に入力の次の行を追加し(間に区切り文字を入れている'\n
間)、結果を空の文字列に置き換えてから、"\r\n"
最初に戻り、パターンスペースの新しい内容が一致しないことを確認します。また偶然。
'\r'
説明に従って:ファイルから他の項目を削除するには、CRLFの組み合わせを削除してから追加します。
sed ":a;/\r$/{$!N;s/\r\n//;t a};s/\r//g"
答え2
私は行の終わりを操作することに関連する作業をするときにperl
クイフを使用する傾向があります。
perl -pe 'BEGIN {undef $/} s/\r\n//g' *.txt
これを行うための鍵は、undef $/
Perlに各ファイルを文字列として読み取らせ、それを検索して置き換えることができることです。\r
裸になるには正規表現を調整します。
perl -pe 'BEGIN {undef $/} s/\r\n?//g' *.txt