使用 sed 處理字面量字串而非輸入檔案


簡介

Sed,是 Stream Editor 的縮寫,是一個功能強大的命令列工具,用於操作和轉換文字。它通常用於對輸入檔案執行操作,例如替換文字、刪除行和插入新文字。但是,sed 也可以與字面量字串而不是輸入檔案一起使用,這在某些情況下非常有用。在本文中,我們將討論使用 sed 處理字面量字串的不同方法,並探討一些使用此功能的示例。

使用 -e 選項

使用 sed 處理字面量字串最直接的方法是使用 -e 選項。此選項允許您直接在命令列上指定 sed 命令,而無需輸入檔案。例如,要替換字面量字串中所有出現的“old”為“new”,您可以使用以下命令:

sed -e 's/old/new/g'

此命令將替換輸入字串中所有出現的“old”為“new”。您還可以使用多個 -e 選項對同一字串執行多個操作。例如,要刪除所有包含“old”的行並替換所有出現的“new”為“updated”,您可以使用以下命令:

sed -e '/old/d' -e 's/new/updated/g'

使用 -n 選項

使用 sed 處理字面量字串的另一種方法是使用 -n 選項。此選項告訴 sed 僅列印與特定模式匹配的行。例如,要僅列印字面量字串中包含“old”的行,可以使用以下命令:

sed -n '/old/p'

此命令將列印輸入字串中所有包含“old”的行。您還可以將 -n 選項與其他 sed 命令結合使用以執行更復雜的操作。例如,要刪除所有包含“old”的行並僅列印其餘行,您可以使用以下命令:

sed -n '/old/!p'

使用 echo 命令

使用 sed 處理字面量字串的另一種方法是使用 echo 命令將字串作為輸入傳遞給 sed。例如,要替換字面量字串中所有出現的“old”為“new”,您可以使用以下命令:

echo "This is an old string" | sed 's/old/new/g'

此命令將替換字串“This is an old string”中所有出現的“old”為“new”並列印結果。您還可以將 echo 命令與其他 sed 命令結合使用以執行更復雜的操作。例如,要刪除所有包含“old”的行並替換所有出現的“new”為“updated”,您可以使用以下命令:

echo "This is an old string. This is a new string." | sed '/old/d' | sed 's/new/updated/g'

使用定界符功能

使用 sed 處理字面量字串的另一種方法是使用定界符功能。定界符是一種在指令碼中包含文字塊而不必將其寫入檔案的方法。例如,要替換字面量字串中所有出現的“old”為“new”,您可以使用以下命令:

sed 's/old/new/g' <<< "This is an old string"

此命令將替換字串“This is an old string”中所有出現的“old”為“new”並列印結果。<<< 運算子用於將字串“This is an old string”作為輸入傳遞給 sed。您還可以將定界符功能與其他 sed 命令結合使用以執行更復雜的操作。例如,要刪除所有包含“old”的行並替換所有出現的“new”為“updated”,您可以使用以下命令:

sed '/old/d' <<< "This is an old string. This is a new string." | sed 's/new/updated/g'

使用 -i 選項

sed 中的 -i 選項允許我們直接編輯檔案,而無需建立臨時檔案或將輸出重定向到新檔案。當我們想要更改檔案但不想建立檔案的副本時,這很有用。例如,要替換名為“file.txt”的檔案中所有出現的“old”為“new”,您可以使用以下命令:

sed -i 's/old/new/g' file.txt

此命令將替換檔案“file.txt”中所有出現的“old”為“new”並將更改儲存到同一檔案。但是,如果我們想將此功能與字面量字串一起使用,則需要使用 echo 命令將字串作為輸入傳遞給 sed。例如,要替換字面量字串中所有出現的“old”為“new”,您可以使用以下命令:

echo "This is an old string" | sed -i 's/old/new/g'

此命令將替換字串“This is an old string”中所有出現的“old”為“new”並將更改儲存到名為“-i”的檔案中。

結論

在本文中,我們討論了使用 sed 處理字面量字串而非輸入檔案的不同方法。我們已經看到,sed 可以與 -e、-n、echo 和定界符功能以及 -i 選項一起使用。這些功能提供了一種靈活且強大的方法來操作和轉換文字,無論它是儲存在檔案中還是作為命令列輸入傳遞。使用這些技術,我們可以輕鬆地對單個字串或一組字串執行復雜的文字操作。

更新於: 2023年1月25日

845 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.