[^\]%
トークンの代わりにsed - コマンドでトークンを置き換える方法が気になります。\%
回答。後ろ姿は必要ないと思います。
私は現在Sedコマンドですが、ここではPerlが必須だと思います。
cat something | sed 's#%.*</#</#'
さらに、%
シンボルの後ろのすべてのコンテンツ、つまりLaTeXのすべてのコメントは削除されますが、パーセント値は削除されません。
Perlで失敗した試み
cat something | perl 's#[^\]%.*</#</#'
私はPerlがcatの標準出力を取得する方法を知りません。
データ
------------------------------
Protocol of pre-eclampsia
------------------------------
Monitoring in 90\% cases
Antihypertensives when % this is a comment, please, remove me!
$SBP/DBP > 160/110$; slowly.
------------------------------
希望の出力
------------------------------
Protocol of pre-eclampsia
------------------------------
Monitoring in 90\% cases
Antihypertensives when
$SBP/DBP > 160/110$; slowly.
------------------------------
%
そうせずにどのようにフラグを交換できますか\%
? Sedでこれを行うことができる場合は、コメントを残してください。
ベストアンサー1
多くの(ほとんどではありませんが)テキスト解析ツールがperl
コマンドラインから入力を受け取るため、必須ではありませんcat
。-e
スクリプトをコマンドライン引数として渡すために必要です。-n
つまり、「入力の各行でスクリプトを実行します」を意味します。 「.」または-p
「各入力行でスクリプトを実行してからその行を印刷する」スイッチを使用できます。 )。
perl -pe 's/foo/bar/' file
cat file | perl -pe 's/foo/bar/'
今私が正しく理解したら、すべてのLaTeXコメントを削除したいと思います(あなたの質問にはありませんが)。もしそうなら、後ろを見て最も簡単な方法は次のとおりです。
perl -pe 's/(?<!\\)%.*//' file
正規表現も機能するはずです。以前に一致した文字を保持して%
バックスラッシュをエスケープするだけです。
perl -pe 's/(^|[^\\]+)%.*/$1/' file
GNUでも同じことができますsed
:
sed -r 's/(^|[^\\])%.*/\1/' file