Sed
如何使用 sed 更改匹配行的最後一個字元
如何使用 sed 更改匹配行的最後一個字元?
範例:/etc/network/interfaces
auto eth0 iface eth0 inet static address 150.0.3.50 netmask 255.255.255.0 network 150.0.3.0 gateway 150.0.3.6 auto eth.....
如何僅更改網關的主機八位字節?我有很多機器可以做到這一點,每台機器都在不同的網路中,但網關的八位字節總是相同的。
如果您的網關是
150.0.3.254
您可以這樣做:sed -i -E 's/([ \t]+gateway[ \t])+[0-9.]+/\1150.0.3.254/' /etc/network/interfaces
讓我解釋一下它是如何工作的:
-i
-> 表示替換文件-E
-> 使用擴展正則表達式,避免轉義特殊字元,(
例如\(
's/<PATTERN>/<REPLACEMENT>/' -> the
s` 表示將模式替換為 replacemnet[ \t]+
-> Space 或 Tab 出現一次或多次。[0-9.]+
-> 從 0 到 9 的數字並點一個或多個出現(對於 ip)(PATTERN) \1
-> 裡面的模式()
儲存為組 1\1
,因此它將用於替換(在這種情況下,空格或製表符+“網關”+空格或製表符)150.0.3.254
-> 是所需的網關最好的祝福