簡體   English   中英

替換文件中的某個字符串-sed

[英]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.

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