目的:
在设计中有时不用数据库管理参数,此时会用文本来管理,一般会采用“参数名关键字=+参数值”来操作。
在linux下可以偷懒,直接使用sed来操作。此功能已在arm板和ubuntu下测试通过。
第一项:删除以"关键字"为首的行
aaa.txt文本内容如下
#!/bin/sh
p=192.168.9.56
mask=255.255.255.0
wg=192.168.9.1
dns1=202.96.104.17
dns2=114.114.114.114
ssid=TP-LINK_111F
password=87562223
end
操作:sed -i ‘/wg=/d’ /home/alientek/aaa.txt
#!/bin/sh
p=192.168.9.56
mask=255.255.255.0
dns1=202.96.104.17
dns2=114.114.114.114
ssid=TP-LINK_111F
password=87562223
end
由此知sed -i ‘/wg=/d’ /home/alientek/aaa.txt的操作是将删除事有wg的行。
实验二:
#!/bin/sh
p=192.168.9.56
mask=255.255.255.0
wg=192.168.9.1
wg=192.168.9.2
dns1=202.96.104.17
dns2=114.114.114.114
ssid=TP-LINK_111F
password=87562223
end
操作:sed -i ‘/wg=/d’ /home/alientek/aaa.txt
#!/bin/sh
p=192.168.9.56
mask=255.255.255.0
dns1=202.96.104.17
dns2=114.114.114.114
ssid=TP-LINK_111F
password=87562223
end
由实验一和二可知,其删除了有“wg=”所有行,
实验三:
#!/bin/sh
p=192.168.9.56
mask=255.255.255.0
aawg=192.168.9.1
dns1=202.96.104.17
dns2=114.114.114.114
ssid=TP-LINK_111F
password=87562223
end
操作:sed -i ‘/wg=/d’ /home/alientek/aaa.txt
#!/bin/sh
p=192.168.9.56
mask=255.255.255.0
dns1=202.96.104.17
dns2=114.114.114.114
ssid=TP-LINK_111F
password=87562223
end
实验一、二和三总结:sed -i ‘/wg=/d’ /home/alientek/aaa.txt
整个文件中,包含wg=的行执行动作/d,表示删除
应用:删除所有含有"关键字的"行
sed -i ‘/关键字/d’ /home/alientek/aaa.txt
缺点:它将删除所有出现关键字的行。改进以关键字为首的行
实验四、
#!/bin/sh
p=192.168.9.56
mask=255.255.255.0
aawg=192.168.9.1
wg=aaaa
dns1=202.96.104.17
dns2=114.114.114.114
ssid=TP-LINK_111F
password=87562223
end
操作:sed -i ‘/^wg=/d’ /home/alientek/aaa.txt
#!/bin/sh
p=192.168.9.56
mask=255.255.255.0
aawg=192.168.9.1
dns1=202.96.104.17
dns2=114.114.114.114
ssid=TP-LINK_111F
password=87562223
end
总结:要想整个文件中,以“关键字”为首的行执行动作删除
则指令是:sed -i ‘/^关键字/d’ 文件
如sed -i ‘/^wg=/d’ /home/alientek/aaa.txt
第二项:向文件第i行后面添加一行数据
#!/bin/sh //第一行
p=192.168.9.56
mask=255.255.255.0
dns1=202.96.104.17
dns2=114.114.114.114
ssid=TP-LINK_111F
password=87562223
end
操作:sed -i “4i aaaaaa” /home/alientek/aaa.txt
#!/bin/sh
p=192.168.9.56
mask=255.255.255.0
aaaaaa
dns1=202.96.104.17
dns2=114.114.114.114
ssid=TP-LINK_111F
password=87562223
end
再操作:sed -i ‘4i aaaaaa’ /home/alientek/aaa.txt
#!/bin/sh
p=192.168.9.56
mask=255.255.255.0
aaaaaa
aaaaaa
dns1=202.96.104.17
dns2=114.114.114.114
ssid=TP-LINK_111F
password=87562223
end
总结:向文件第n行输入一行数据操作
sed -i ‘4i 内容’ 文件