私はさまざまな組み合わせを試しましたが、成功しませんでした。この時点でご協力ありがとうございました。
この行の終わりを何度も(約300回)交換する必要があります。
:;XXXXXX (lenght may vary)
私はそれを見つけることができ、:;*$
それは私に必要なものを正確に強調しました!ただし、交換することはできないため、次のようになります。:;XXXXXX;;;
*
- 何でも一致する必要があります。
$
- 行末と一致する必要があります(はい)。
他のすべてと同様に、*
括弧内に入れようとしましたが、役に立ちませんでした。もちろん、置き換えは行われますが、入力と同じ形式です。たとえば...代わりに私はそれを得ます - それが私が得ることができる最善です。(*); [*]
:;(*);;;$
:;XXXXXX;;;
:;*;;;
これはUltraEdit正規表現形式ですが、このソフトウェアはUnixおよびPerl正規表現も処理できます。
あなたがこれを提案できる何らかの方法で試してみましょう(ターミナル、その他のソフトウェアなど)。
編集する:
既存のNokiaから新しいNokia(s30+シリーズ)に連絡先を転送しようとしています。 backup.nbuからのみ.vcf連絡先を取得しました。 .txt経由でファイルに入れましたcat *.vcf > combined.vcf
。完全なプロセスを実行する必要があるExcelマクロとPHPスクリプトを見つけましたが、うまくいきませんでした。しかし、みんなあまり関係がないようです。その後、この特定のモデルが処理できるVcard形式を見つけました。今、同じように見えるように修正しようとしています。線を変更することは問題ありませんが、最後を編集する必要があります。名前を変更し;:NAME
ないでください...;:NAME;;;
上記の方法を試しました。その後、私は提案を試しましたsed -ri "s/\:\;X+$/&\;\;\;/g"
。
私はDOS行の終わりが問題である可能性があると確信していたので、次を実行してからsed -i 's/\r//g' combined.vcf
提案されたsidコマンドを再実行しました。
から:N;CHARSET=UTF-8;ENCODING=8BIT:ALFA
到着する:N;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:;ALFA;;;
編集2:
だから最初から始めました...
.vcf ファイルをマージしました。
UltraEditで開き、LF(CRLFで)として保存 -
sed
端末なしで試してください検索と置換でPerl Regexを選択しました。
探す
(:;)(.*)
変える
\1\2;;;
注:.*
- 0個以上のすべての文字と一致します(改行を除く)...
完璧!
ベストアンサー1
必要なのは逆参照と言います。その意味は」コンテストで選択したすべてをここに配置します。」と次のように動作します。
- 文字列の一部を選択するには、一致する正規表現に括弧を使用してください。
- 番号付きの逆参照を使用してください(
\1
最初の角かっこ、\2
2番目の括弧など)。
sed
これをサポートすると、次のコマンドが生成されます(sed
角かっこをエスケープする必要がありますが、他の正規表現ベースのソフトウェアではそうでない可能性があります)。
sed -i 's/^\(:;.*\)$/\1;;;/' combined.vcf