簡體   English   中英

如何在sed命令中使用正則表達式

[英]How to use regular expression in sed command

我在某些文件中有一些帶有此模式的字符串:

  • domain.com/page-10
  • domain.com/page-15 ....

我想用類似的東西代替它們

  • domain.com/apple-10.html
  • domain.com/apple-15.html

我發現我可以一次使用sed命令替換它們,但是因為在添加數字之后,我想我必須使用正則表達式來做到這一點。 但我不知道如何。

sed -i.bak -r 's/page-([0-9]+)/apple-\1.html/' file

sed  's/page-\([0-9][0-9]*\)/apple-\1.html/' file > t && mv t file

除sed外,您還可以使用gawk的gensub()

awk '{b=gensub(/page-([0-9]+)/,"apple-\\1.html","g",$0) ;print b  }' file
sed -i 's/page-\([0-9]*\)/apple-\1.html/' <filename>

([0-9]*) 捕獲一組數字; 替換字符串中的\\1引用捕獲並將其添加為替換字符串的一部分。

如果您需要保留文件副本而不進行替換,則可能需要使用-i.backup東西,或者只是省略-i而是使用I / O重定向方法。

解決問題的另一種方法:

sed -i.bak 's/\(^.*\)\(page-\)\(.*\)/\1apple-\3.html/' Files

在這里,搜索模式是使用引用( \\1\\2\\3 )存儲和檢索的。

這會起作用

sed 's/$/\.html/g' file.txt

暫無
暫無

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

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