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