最初のセミコロンの後のすべてのセミコロンを変更する方法は?

最初のセミコロンの後のすべてのセミコロンを変更する方法は?

この問題は、Excelファイルの質問と回答を、Anki Flashカードプログラムが説明したように処理する.txtファイルにインポートしようとすることに関連しています。ここ。複数のフィールドを持つことはできないため、オプションを1つのフィールドに設定する必要があります。

Ankiのマニュアルで説明されているように、LibreOfficeでCSV形式で保存されたデータ(フィールドセパレータとして使用されるセミコロン - マニュアルの内容とは異なります)

Question ipsun; option 1 ; option 2 ; option 3 ; option 4 ; ... ; option n
Question ipsun; option 1 ; option 2 ; option 3 ; option 4 ; ... ; option n
...

すべてのオプションを含む各項目は、「フラッシュカード」という行にあります。カードでは、前半はセミコロンの前に、後半はセミコロンの後に続きます。改行などの2番目のフラッシュカード。

必要な出力はUTF-8でなければなりません。

Question ipsun; option 1 | option 2 | option 3 | option 4 | ... | option n
Question ipsun; option 1 | option 2 | option 3 | option 4 | ... | option n
...

私のPerl擬似コードは以下に基づいています。回答

perl -00 -pe s/;/\0/; s/;/ |/g; s/\0/;/' file

コメントしました。

perl -00 -pe '   # each record is separated by blank lines (-00)
                 # read the file a record at a time and auto-print (-p)
    s/;/\0/;    # turn the first semicolon into a null byte
    s/;/ |/g;     # replace all other semicolons with " |"
    s/\0/;/     # restore the first semicolon
' file

最初のセミコロンの後のすべてのセミコロンを変更する方法は?

ベストアンサー1

GNUの使用sed:

sed 's/;/|/2g'

;|2回目の発生からグローバルに交換します。

sed 's/;/|/2sumはPOSIXですが、s/;/|/g設定はPOSIXではなく、動作は実装ごとに異なります。ただし、GNU実装を使用すると、sedこの動作が明確に文書化されます。

おすすめ記事