Bashで文字列操作に中括弧を使用する

Bashで文字列操作に中括弧を使用する

ラテックスファイルの文字列があり、それを処理したいと思います。

\title{This is the title}

「This is the title」を変数に保存したいのですが、中かっこを含む部分文字列をエスケープしようとしても削除できません。

title=`grep -F "\title" file.tex`
title=${title#\}}
title=${title%\{}

これらのいずれも機能せず、中括弧を一重引用符または二重引用符で囲むこともありません。

ベストアンサー1

これが$title文字列であると仮定します\title{This is the title}

title=${title#*{}
title=${title%\}}

最初のパラメーター置換の項目は{エスケープする必要はありませんが(エスケープしても無効になるわけではありません)、}2番目のパラメーターの項目はエスケープされます。最初のケースでは、文字列のビットを*一致させるか、明示的な文字列削除を使用する必要があります。\title${title#\\title{}\title{

コード内でと混乱しているように見え、%代替エントリからプレフィックス文字列を削除することを忘れました。#*


タイトル文字列が1行を超えないと仮定すると、次のように文書からこれらの文字列をすべて取得できます。

sed -n 's/.*\\title{\([^}]*\)}.*/\1/p' file

これは各行の(最初の)と一致\title{SOMETHING}し、行全体を部分文字列に置き換えますSOMETHING。他のすべてのデータは削除されます。

おすすめ記事