簡體   English   中英

sed命令中的正則表達式

[英]Regular expression in sed command

我想使用sed命令更改文件中的一個(准確地說是寬度)參數。 在這種情況下,它是運動程序中用於運動檢測的motion.conf。

我已經寫了一個用於行替換的命令,但是它不起作用,因為我希望它能工作。 這是命令:

sudo sed 's/width [0-9]/change/g' /etc/motion/motion.conf

僅當我寫了[0-9]時,行的選擇才有效。 如果我放置[0-9]+則命令不再起作用。

你能告訴我如何使它工作嗎?

謝謝

您需要做的就是逃避+

$ cat a
xxx width 0 hallo
xxx width 12 hallo
$ sed 's/width [0-9]\+/change/g' a
xxx change hallo
xxx change hallo

您可以在此處找到GNU sed的正則表達式語法。

請注意,sed默認情況下使用POSIX BRE(基本正則表達式)語法。 在POSIX規范中+不存在,但是許多linux實現都添加了它。 為了獲得更可移植的模式,您可以編寫:

sed 's/width [0-9][0-9]*/change/g'

要么

sed 's/width [0-9]\{1,\}/change/g'

但是在某些舊版本中不支持大括號量詞。

您還可以將正則表達式語法切換為支持+量詞且無需轉義的ERE(擴展正則表達式):

sed -r 's/width [0-9]+/change/g'

-r選項可能會有所不同(例如: -E具體取決於您的sed版本。)

您可以在此處查看這些語法。

暫無
暫無

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

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