目的:
在设计中有时不用数据库管理参数,此时会用文本来管理,一般会采用“参数名关键字=+参数值”来操作。
在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 内容’ 文件
|