テキストモードで特定の文字を削除する

テキストモードで特定の文字を削除する

Pandoc形式のcitekeysを含むテキストを含むMarkdownファイルを含むフォルダがあります[@Name:2021]。私のcitekeyからコロンを削除することに決め、マークダウンファイルから自動的に削除したいと思います。 citekey は次の形式を取ることができます。

[@Name:2021]
[@Name:2021, 10]
[@Name:Title]
[Vgl. @Name:2021]
[Vgl. @Name:2021, 20--30]

だから彼らは次のようになります:

[@Name2021]
[@Name2021, 10]
[@NameTitle]
[Vgl. @Name2021]
[Vgl. @Name2021, 20--30]

最近追加した citekey にはコロンが含まれなくなりました。もちろん、形式に^[Text]コロンが含まれているので削除しない脚注もあるかもしれません。

すべてのマークダウンファイルの引用符からコロンを自動的に削除できるコマンドラインユーティリティのコマンド/スクリプトはありますか?ご協力ありがとうございます!

ベストアンサー1

Perlはここで便利です。代替部分はs///コードで計算できます。

perl -pe 's/\[[^]]*@.+?\]/ ($cite = $&) =~ s{:}{}g; $cite /ge' file

出力

[@Name2021]
[@Name2021, 10]
[@NameTitle]
[Vgl. @Name2021]
[Vgl. @Name2021, 20--30]

出力に満足したら、次のコマンドを使用して変更をファイルに保存し直すことができます。

perl -i -pe ...

おすすめ記事