Bash

在 bash 中使用大括號進行字元串操作

  • April 6, 2020

我有一個我想處理的乳膠文件中的字元串:

\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。所有其他數據都被丟棄。

引用自:https://unix.stackexchange.com/questions/578215