csplitはバックスラッシュr \ rをキャリッジリターンと見なします。

csplitはバックスラッシュr \ rをキャリッジリターンと見なします。

\r\n行末(CRLFキャリッジ戻り改行)を含むファイルがあります。

このコマンドの仕組み:

$ csplit --silent --prefix=email-emailbad.txt- \
    --digits=3 emailbad.txt '/^\.^M/'+1 '{*}'

実際のキャリッジリターン文字を挿入するには、まず+CTLRを押してから+を押す必要があります。VCTRLM

印刷可能な文字(SVNなど)のみを使用するように機能したいと思います。

$ csplit --silent --prefix=email-emailbad.txt- \
    --digits=3  emailbad.txt '/^\.\r/'+1 '{*}'

私は一重引用符と二重引用符を使用し、引用符なしで試しました。どんな提案でも歓迎します。

ベストアンサー1

ksh93zshまたはを使用している場合は、引用符付き文字列内でCスタイルのバックスラッシュエスケープ解釈を実行するksh拡張をbash使用できます。$'...'

csplit --silent --prefix=email-emailbad.txt- --digits=3 \
       emailbad.txt $'/^\.\r/+1' '{*}'

それ以外の場合は、printf非常に似た方法で文字列を作成できます。

csplit --silent --prefix=email-emailbad.txt- --digits=3 \
       emailbad.txt "$(printf '/^\.\r/+1')" '{*}'

おすすめ記事