vCard行を分割する方法

vCard行を分割する方法

関連vCard回線に参加する方法、vCardは奇妙な行分割を実行します。1行に75文字を超える場合は、「CR、LF、スペース」シーケンスを挿入してください。したがって、次の行は次のようになります。

123456789A123456789B123456789C123456789D123456789E123456789F123456789G123456789H123456789I123456789J123456789K123456789L123456789M123456789N123456789O123456789P123456789Q123456789R123456789S123456789U123456789V123456789W123

次の行に分割する必要があります。

123456789A123456789B123456789C123456789D123456789E123456789F123456789G12345
 6789H123456789I123456789J123456789K123456789L123456789M123456789N123456789
 O123456789P123456789Q123456789R123456789S123456789U123456789V123456789W123

75文字ごとに行分割シーケンスを挿入することはできません。これは、各行が再び75文字より長くなるためです。そして75文字を数えた後は挿入できません。これは、行が次の場合にのみ発生するためです。もっと長く75文字以上。 1つの方法は、入力が変更されなくなるまで次のコマンドを繰り返すことです。

sed -e 's/^\(.\{75\}\)\([^\r]\)/\1\r\n \2/' < file | sed -e '...' | ...

これは明らかに長く不確実な行には機能せず、非常に非効率的です。この代替品をどのように作成しますか?

ベストアンサー1

スクリプトに2つのコマンドを追加するだけですPD

sed -e '{ s/\(.\{75\}\)\(.\)/\1\n \2/; P; D }' file

おすすめ記事