帮忙写个Linux下shell脚本,(使用sed命令处理hosts文件)

发布网友 发布时间:2022-04-23 03:51

我来回答

1个回答

热心网友 时间:2023-09-22 13:12

#下面是脚本内容,注意修改/etc/hosts文件需要超级用户权限,换句话说,你需要sudo执行本脚本。

#!/bin/bash
DELIM="'"
N=2

echo "Please pull the file to me."
#read storepath1
storepath1="/etc/hosts"

storepath1=`echo "$storepath1" | cut -d "$DELIM" -f $N`

#这个好理解:
#1.把不是以#号开头的行替换为以!!@开头
#2.把以#号开头的行的 #号删除
#3.把!!@替换为# 号

#sed -i -r -e '/^#/! s|^|!!@|' -e 's|^#||' -e 's|^!!@|#|' "$storepath1"

#这个精炼些
#如果行以 #号开头,则删除#。
# 如果刚刚进行了删除操作,那么执行t 操作,跳到sed脚本末尾,结束操作。
# 如果刚刚没有进行删除操作,那么继续执行s|^|#|,将开头添加 #号。

#sed -i -r -e 's|^#||;t;s|^|#|' "$storepath1"

#这个匹配3位数+点开头的行
#原理同上,只不过不是处理每一行,而是处理以三位数加点号开头的行。

sed -i -r -e 's|^#([0-9]{3}\.)|\1|;t;s|^([0-9]{3}\.)|#\1|' "$storepath1"

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com