bash - 如何在一行中找到 ip 并将其替换为 bash 脚本?
问题描述
我有这样的文件
www IN A 192.168.10.1
webmail IN A 192.168.10.2
mail IN A 192.168.10.3
我想编写一个像这样获得 3 个输入的 bash 脚本
./script.sh network.com www 192.168.10.10
和脚本是
project=$1
server=$2
ip=$3
h=$(awk -F "$server IN A" '{print $2}' /home/forward.$project)
sed -i "s/$h/$ip/"
我想找到以第二个输入开头的行并用第三个输入替换(ip),但我的脚本不起作用。
解决方案
您可以选择 sed 中的行并进行正则表达式替换。
project=$1
server=${2//./\\.} # escape '.' to avoid problems with sed if $server contains some
ip=$3
sed -E "/^$server /s/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/$ip/" "$1"
推荐阅读
- c++ - Valgrinds 说我有很大的泄漏?
- php - MySQL 与 PHP 的连接
- pyspark - 如何从另一个 df 值中补充一个 df
- ios - UITableView 圆角半径无法正常工作
- java - HibernatePersistenceProvider 的 ClassNotFoundException
- java - 阵列旋转 TLE(超出时间限制)
- r - 查找标记在组中少于以前的次数
- c# - C# - 将 XML 元素转换为连接字符串中的键值对
- android - Flutter Firebase - Release APK 与 Debug APK 不同
- mongodb - _id 找不到子文档