印刷用のMarkdown文書とEPUBファイルを準備しています。 EPUBファイルから単語定義脚注を削除したいです。
削除する脚注の形式は、すべての英数字文字セット(他の文字を含む)にする[mean-X]
ことができます。X
-
私は試した:
grep -o "\[\^mean-.*\]"
結果の例:
[^mean-vicissitudes]
[^mean-immortality]
[^mean-ingot]
[^mean-remonstrance]
[^mean-libeller]
[^mean-debauched] and the most amorous[^mean-amorous]
[^mean-turpitude]
[^mean-debauched] drunken, licentious,[^mean-licentious]
[^mean-frivolous]
[^mean-despots]
[^mean-repentance]
[^mean-ignominy]
[^mean-vain]
[^mean-presumptuousness] haughtiness,[^mean-haughtiness]
同じ行に複数の脚注が表示されると、正規表現は最後の項目に展開されます]
。
私も次のことを試しました。
grep -o "\[\^mean-.*\][^\[]"
それでもオリジナルと同じ場合があり、最後のケースの後にコンマとコロンをキャプチャします]
。grep -o "\[\{1\}\^mean-.*\]"
しかし、それは問題を解決しません。私はそれがただ1つのインスタンスをキャプチャすると思います[
。grep -o "\[\^mean-.*\]\{1\}"
しかし、それも問題を解決しません。私はそれがただ1つのインスタンスをキャプチャすると思います]
。
grepを使用して脚注をキャプチャして削除する方法(スペースに置き換える代わりに、代わりに)削除するそれらを)か。
PS Windows用のGit Bashを使用していますが、コマンドは同じようです。
答え1
問題は.*
それを表現する方法、つまり「欲」です。これにより、式は行]
の最後の部分まで]
行の残りの部分と一致します。代わりに、表現のこの部分をあなたが直接可能であると言うこと、つまり英数字の合計と一致するようにしてください-
。英数字が一致し、[[:alnum:]]
括弧[[:alnum:]-]
内の式がダッシュとも一致するようにします。
\[\^mean-[[:alnum:]-]*\]
質問のデータに対して以下を実行します。
$ grep -o '\[\^mean-[[:alnum:]-]*\]' file
[^mean-vicissitudes]
[^mean-immortality]
[^mean-ingot]
[^mean-remonstrance]
[^mean-libeller]
[^mean-debauched]
[^mean-amorous]
[^mean-turpitude]
[^mean-debauched]
[^mean-licentious]
[^mean-frivolous]
[^mean-despots]
[^mean-repentance]
[^mean-ignominy]
[^mean-vain]
[^mean-presumptuousness]
[^mean-haughtiness]
あなたのgrep
命令は明らかにタブレット一致しますが、削除しません。これを行うには、sed
編集スクリプトを使用します。
$ sed 's/\[\^mean-[[:alnum:]-]*\]//g' file
and the most amorous
drunken, licentious,
haughtiness,
空行を追加し、初期スペースを削除します。
$ sed 's/\[\^mean-[[:alnum:]-]*\]//g; /^[[:blank:]]*$/d; s/^[[:blank:]]*//' file
and the most amorous
drunken, licentious,
haughtiness,
または[^mean-...]
、
sed '/\[\^mean-[[:alnum:]-]*\]/{ s///g; /^[[:blank:]]*$/d; s/^[[:blank:]]*//; }' file