通过 shell 脚本读取文件并注释与匹配字符串的行
我想通过 shell 脚本注释匹配的文件行 (final_ip)
我有一个输入文件(input_ip)如果搜索ip与final_ip文件匹配,请更改下面提到的文件内容
更改前:
192.168.1.12 #SAM
更改后,匹配行必须替换:
# 192.168.1.12 #SAM
答案1
sed '/<string>/s/^/<comment_char>/' <file>
/<string>/
对匹配的线路进行操作<string>
。^
对行首进行操作并插入注释字符。
据我了解,您想从文件中读取 IP 地址。然后您可以使用以下脚本。用法:script <file_containing_the_IP_address> <file_to_operate_on>
#!/bin/sh
ip_file="$1"
file_to_change="$2"
comment='# '
ip=$(sed 's/\./\\./g' "$ip_file")
temp_file=$(mktemp)
sed "/$ip/s/^/$comment/" "$file_to_change" > "$temp_file" &&
mv -- "$temp_file" "$file_to_change"
exit 0
如果脚本不需要可移植,您也可以使用 GNU sed 的-i
开关。
答案2
这使用 GNU sed 的 -i 扩展来就地编辑 Final_ip 文件:
input=`cat input_ip`
sed -i "s/$input/# $input/" final_ip
在 sed 脚本周围加上双引号允许对 $input 变量进行插值。仅当 input_ip 文件中有一个 IP 时才有效。