_plain text
_のようなLaTeX
コマンドを含む_\hspace{5cm}
_ファイルがあります。このファイルを_.odt
_に変換すると、カスタムコマンドの一部が正しく変換されません。 specificコマンドを自動的に検索して置換したいが、括弧の内容は保持したい(つまり、ほとんどのコマンドを保持し、一部を削除したい)。 gedit
を開いて手動で置換を行うことができることは知っていますが、これは繰り返しの自動置換のためのスクリプト用です。
私はすでにこれを検索しましたが、コンテンツを保持しながら括弧を削除する回答のみを見つけました(cf. here 、here))。また、sed
のいくつかの紹介(例: here または here )も成功しませんでした。
_This is my \textbf{text} where there are about \prc{5} commands, i.e. \mErrRange{30}{20}{m}.
_
したがって、これらは割合とエラー範囲であるため、コマンドと中括弧を削除して、次のようなものを取得したい(_\textbf{...}
_コマンドを保持する):
_This is my \textbf{text} where there are 5 % commands, i.e. 30 ± 20 m.
_
これまでに試したこと:
次のようなさまざまな使用方法sed
sed -i -e 's/\\prc{\(.*\)}/\1%/g' hello.txt
これはすでに私に与えます:
_This is my \textbf{text} where there are about 5} commands, i.e. \mErrRange{30}{20}{m%.
_
(行内の最後の中括弧を置き換えますが、その場所に他の括弧を残します。)
だから、今、私はそれを続ける方法がわかりません。おそらくsed
?の代わりに別のツールを使用する必要があります! Ubuntuで&terminal
で実行している提案のうち、あまりインストールしなくても良いと思う。
方法は次のとおりです。
sed 's/\\prc{\([^}]*\)}/\1 %/g'
これにより、\prc
に続く括弧内のすべてがキャプチャされ、グループ1
に保存されます。これを使用して、コマンドを括弧の内容に置き換えることができます。 [^}]*
は、ここで閉じ括弧を除くすべてを単純に取ります。 g
は「グローバル」を表し、最初のパターンだけでなく、行内のパターンのすべての出現を置換することを意味します。これは、すべての式で必要になります。
もう1つは、複数のグループを使用するだけです。
sed 's/\\mErrRange{\([^}]*\)}{\([^}]*\)}{\([^}]*\)}/\1 ± \2 \3/g'
これらの式は好きなだけ組み合わせることができますが、簡単にはわかりません。次のように、1行に1つの式を持つsed
スクリプトを作成することをお勧めします。
#!/bin/sed -f
s/\\prc{\([^}]*\)}/\1 %/g
s/\\mErrRange{\([^}]*\)}{\([^}]*\)}{\([^}]*\)}/\1 ± \2 \3/g
例として保存しますscript.sed
、chmod +x /path/to/script.sed
で実行可能にし、/path/to/script.sed
で実行します。
$ /path/to/script.sed <hello.txt
This is my \textbf{text} where there are about 5 % commands, i.e. 30 ± 20 m.
シェルが可能な限り頻繁に入力ファイルを開くようにしました。したがって、<hello.txt
(これも機能します!)の代わりにhello.txt
を開きます。あなたがこれが正確に何を持っているかに興味があるなら、私は nix.SEに関するこの答え をお勧めします。