Bash
在 bash 中使用大括號進行字元串操作
我有一個我想處理的乳膠文件中的字元串:
\title{This is the title}
我想將“This is the title”保存在一個變數中,但無法設法刪除帶有大括號的子字元串,儘管我試圖逃避這些。
title=`grep -F "\title" file.tex` title=${title#\}} title=${title%\{}
這些都不起作用,並且將大括號放在單引號或雙引號中也不起作用。
假設這
$title
是字元串\title{This is the title}
:title=${title#*{} title=${title%\}}
第
{
一個參數替換中的 the 不需要轉義(轉義它不會使其不起作用),但}
第二個參數中的 the 需要轉義。在第一個中,您還需要*
匹配\title
字元串中的位,或者用於${title#\\title{}
刪除顯式字元串\title{
。您似乎在程式碼中弄混了
%
and#
,而您忘記了*
在刪除前綴字元串的替換中。假設標題字元串不超過一行,您可能會從文件中獲取所有這些字元串
sed -n 's/.*\\title{\([^}]*\)}.*/\1/p' file
這匹配(第一個)
\title{SOMETHING}
每一行,並用子字元串替換整行SOMETHING
。所有其他數據都被丟棄。