簡體   English   中英

如何使用`sed`替換用雙引號括住目錄的單引號

[英]How can I use `sed` to replace the single quotes enclosing a directory with double quotes

我要實現的目標:

假設我有一個包含以下內容的file

ENV_VAR='/foo/`whoami`/bar/'
sh my_script.sh 'LOL'

我要替換-使用sed包圍目錄名稱的單引號 ,而不是包圍似乎不是目錄的內容(例如腳本的參數)的單引號

也就是說,在運行sed命令之后,我希望獲得以下輸出:

ENV_VAR="/foo/`whoami`/bar/"
sh my_script.sh 'LOL'

這樣做的目的是在不使用tr來將'替換為"seds/'/"/g情況下實現這一點,因為我不想替換似乎不是目錄的行。

請注意sedAIX上運行,因此沒有GNU sed可用。

我試過的

如果我像這樣使用sed

sed "s;'=.*/.*';&;g" file

... &變量保存先前匹配的正則表達式,即: ='/foo/`whoami`/bar/' 但是,我不知道如何進行替換,因此單引號變成了雙引號

我想知道是否有辦法通過sed僅使用sed進行這項工作。

這將完成工作:

/usr/bin/sed -e "/='.*\\/.*'/ s/'/\\"/g" file

基本上,您只需要普通的'=>“替換,而不是所有行,僅是與模式='.*\\/.*'/匹配的='.*\\/.*'/ 。而且,在s命令中,您只需要轉義” 。

這應該工作:

sed "s/'\(.*\/.*\)'/\"\1\"/g"

捕獲'之間的部分,並使用反向引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM