通过 shell 脚本读取文件并注释与字符串匹配的行

通过 shell 脚本读取文件并注释与字符串匹配的行

通过 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 时才有效。

相关内容