假設我們有以下內容作為標準輸入(作為範例)
Life is temporary
我希望 sed 將其替換為
Life is permanent
與某個地方的命令類似
sed 's/Life<%XY=.*>temporary/Life%XYpermanent'
當然,我知道上面不是一個有效的命令,它只是作為一個例子。我想將.*
匹配的任何內容儲存到變數中,並且想在替換字串中呼叫該變數。
答案1
sed 's/Life\(.*\)temporary/Life\1permanent/'
這裡\1
指的是模式中的第一對括號。在這種情況下,它是唯一的對,但通常您可以有更多對,然後您可以使用等\2
,\3
最多\9
。
括號被轉義。如果沒有\
它們,它們就會被字面理解,並且\1
不會起作用。如果你使用sed -E
那麼它將被反轉:(
將是特殊的並且\(
將表示一個文字(
(注意一般來說這不是唯一的區別-E
):
sed -E 's/Life(.*)temporary/Life\1permanent/'
這項變更使我們的sed
程式碼對人類來說更具可讀性。