人。
有一个名为' server.conf'我想用shell来改变它的内容。
在第115行,其中有server-bridge 192.168.50.225(ip) 255.255.0.0(mask) 192.168.10.50(begin ip) 192.168.10.90(end ip)
。我想更改ip
,mask
,begin ip
和end ip
。例如,我打算改变
`server-bridge 192.168.50.225 255.255.0.0 192.168.10.50 192.168.10.90`
进入
`server-bridge 192.168.10.100 255.255.0.0 192.168.10.60 192.168.10.80`
我应该如何处理sed
或其他工具?非常感谢。
答案 0 :(得分:1)
sed -i's / server-bridge \ 192.168.50.225 \ 255.255.0.0 \\ 192.168.10.50 \ 192.168.10.90/server-bridge \ 192.168.10.100 \ 255.255.0.0 \\ 192.168.10.60 \ 192.168.10.80 /'server.conf
您还可以创建一个简单的脚本,其中要替换的新值存储在$ ip ..etc .... sed -i将对文件进行编辑。
答案 1 :(得分:0)
我使用过的最好的工具是Vi。
(sudo)vi /home/mydoc.txt将打开,允许您进行所需的任何编辑。如果您以前从未使用过Vi,那么在线有一些很棒的HOW-TO和教程。这是一个:
http://www.howtogeek.com/102468/a-beginners-guide-to-editing-text-files-with-vi/
但是我鼓励你在更改你引用的文件之前真正阅读和试验测试文件,并且,请备份文件(cp /home/mydoc.txt mydoc.txt-在你做之前。您可以随时删除不起作用的已编辑文件,但在大量退出后恢复原始文件可能会令人头疼。
答案 2 :(得分:0)
你可以使用sed这样做,例如这样的事情 注意:\ sed Intro
会转义每个空格 cat server.conf | sed 's/server-bridge\ 192.168.50.225\ 255.255.0.0\ \ 192.168.10.50\ 192.168.10.90/server-bridge\ 192.168.10.100 255.255.0.0\ \ 192.168.10.60\ 192.168.10.80/' > server.conf
或者您可以使用两个文件来保证安全,例如
cat server.conf | sed 's/server-bridge\ 192.168.50.225\ 255.255.0.0\ \ 192.168.10.50\ 192.168.10.90/server-bridge\ 192.168.10.100 255.255.0.0\ \ 192.168.10.60\ 192.168.10.80/' > server.conf.bak
cat server.conf.bak > server.conf
答案 3 :(得分:0)
你可以使用这个awk:
awk -v ip='192.168.10.100' -v mask='255.255.0.0' -v bip='192.168.10.60' \
-v eip='192.168.10.80' '/server-bridge/{$2=ip "(ip)"; $3=mask "(mask)"; $4=bip "(begin";
$6=eip "(end"} 1' server.conf
答案 4 :(得分:0)
使用sed更改包含server-bridge
的所有行:
sed -i -e '/^server-bridge/!b' \
-e 'c server-bridge 192.168.10.100 255.255.0.0 192.168.10.60 192.168.10.80' input
仅更改第115行:
sed -i -e '115!b' \
-e 'c server-bridge 192.168.10.100 255.255.0.0 192.168.10.60 192.168.10.80' input