我想检查文件是否包含特定字符串(避免使用注释行),如果不包含,则要将新行添加到文件中。
搜索字符串:VOINFNADT05
文件:/etc/hosts
#127.0.0.1 localhost.localdomain localhost.localdomain localhost4 localhost4.localdomain4 localhost hh
#::1 localhost.localdomain localhost.localdomain localhost6 localhost6.localdomain6 localhost hh
#10.85.92.134 VOINFNADT05.ad.infosys.com VOINFNADT05 localhost
#10.138.15.1 VBLRSBODSPV204.ad.infosys.com VBLRSBODSPV204
10.138.14.128 VBLRSBODSPV203.ad.infosys.com VBLRSBODSPV203
如果找不到搜索字符串,则追加行:
10.85.92.134 VOINFNADT05.ad.infosys.com VOINFNADT05 localhost
最佳答案
请尝试以下操作:
file="/etc/hosts"
sed 's/#.*//' "$file" | grep VOINFNADT05 >/dev/null 2>&1 || echo "10.85.92.134 VOINFNADT05.ad.infosys.com VOINFNADT05 localhost" >> "$file"
sed
命令sed 's/#.*//'
删除注释(不覆盖文件)。然后将输出馈送到
grep
。如果找不到该字符串,则将该行附加到文件中。
也许这很容易说,但是您应该使用root特权运行它。
希望这可以帮助。
关于linux - 检查文件是否包含特定字符串以及是否已注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59301110/