Shell-Script
shell 腳本 - 刪除特定模式之前的字元
我有我的
/etc/hosts
:#192.168.54.144 name1 #192.168.54.144 name2 192.168.54.143 name3
我想刪除所有
#
後跟IP地址Ipv4的字元以獲得:192.168.54.144 name1 192.168.54.144 name2 192.168.54.143 name3
我想我應該使用
sed
orawk
orcut
?謝謝
使用 GNU
sed
:僅匹配真實 IP(通過):
sed -E 's/^#(((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5]))/\1/' file
或簡單匹配,檢查數字後
#
:sed 's/^#\([[:digit:]]\)/\1/' file
這只會列印結果,添加
-i
到編輯文件中。您也可以使用
perl
with lookehead 來不需要反向引用:perl -pe 's/^\#(?=[[:digit:]])//' file
命令
sed "/^#[0-9]*\.[0-9]*\.[0-9]*\.[0-9]\{3\}/s/#//g" filename
輸出
sed "/^#[0-9]*\.[0-9]*\.[0-9]*\.[0-9]\{3\}/s/#//g" filename 192.168.54.144 name1 192.168.54.144 name2 192.168.54.143 name3