通過避免使用擴展正則表達式可以簡化,只有*
nee DS到在這種情況下
$ cat ip.txt
'generic_raid': {'keys': 5 * (1000**3)
$ sed "s/'generic_raid': {'keys': 5 \* (1000\*\*3)/'generic_raid': {'keys': 2/g" ip.txt
'generic_raid': {'keys': 2
在這種情況下,不需要進行轉義的,但如果"
是不希望的,在圖案'
特徵,ASCII碼\x27
可用於
$ sed 's/\x27generic_raid\x27: {\x27keys\x27: 5 \* (1000\*\*3)/\x27generic_raid\x27: {\x27keys\x27: 2/g' ip.txt
'generic_raid': {'keys': 2
此外,perl
溶液有\Q
功能在這些情況下有所幫助:
$ perl -pe "s/\Q'generic_raid': {'keys': 5 * (1000**3)/'generic_raid': {'keys': 2/" ip.txt
'generic_raid': {'keys': 2
從perldoc
返回EXPR值,所有ASCII非「字」字符 反斜槓。 (也就是說,所有ASCII字符不匹配 /[A-ZA-z_0-9] /將由反斜槓返回字符串中之前, 不管任何區域設置。)
逃生大括號,*,(,) –
非常感謝阿維納什,它的工作。我使用了下面的命令 - sudo sed -r -i「s /'generic_raid':\ {'keys':5 \ * \(1000 \ * \ * 3 \)/'generic_raid':\ {'keys':2/g「abc.py –
如果你不確定是否需要轉義某些東西,可以將一個字符放在方括號中。 '[*]'匹配'*','[{]'匹配'{'等等。 – ghoti