[英]replace a certain string in a file - sed
問題在於文件中包含許多字符串,例如$VARx$
, x
表示從1到9的數字: $VAR1$
, $VAR2$
, $VAR3$
等。
我想引用$VARx$
→ "$VARx$"
類的字符串。 我讀過或知道使用sed在命令行之外可以實現此目的,但我不知道如何實現。 那樣的東西,但是不起作用:
sed -i "s/\\\$VAR1\$/\"\$VAR1\"\$/g" file.txt
特殊的部分將包括變量x
。
嘗試
sed -i 's/\$VAR[[:digit:]]\+\$/"&"/g' file.txt
[[:digit:]]\\+
匹配1個或多個數字。 &
表示匹配的字符串。
GNU sed手冊: http : //www.gnu.org/software/sed/manual/html_node/index.html
使用sed
另一種選擇:
sed -i 's/\(\$VAR[1-9]\$\)/"\1"/g' file.txt
此解決方案似乎更接近PO的規范:
一個包含許多字符串(如
$VARx$
和x)的文件表示1到9之間的數字。
=> [1-9]
僅匹配1到9之間的一位數字。
在此示例中,我還想展示捕獲括號的用法: \\1
對應於捕獲括號( \\(...\\)
)捕獲的第一個表達式。 當然, &
工作以及這種情況:
sed -i 's/\$VAR[1-9]\$/"&"/g' file.txt
請注意: -i
將直接替代文件而不是標准輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.