如何通过shell脚本保留文件前两行并将剩余所有行注释掉
Shell脚本实现保留前2行、注释后续所有行的方案
你可以直接用sed行匹配替换实现需求,不需要复杂的行数判断和循环操作,实现代码如下:
#!/bin/bash IP=$(hostname -I) file_path="/tmp/test" # 第3行到文件末尾所有行首加#注释 sed -i '3,$ s/^/# /' "$file_path" # 追加需要新增的主机记录行 echo "$IP $HOSTNAME.yyyy.xxxx.com $HOSTNAME" >> "$file_path"
命令说明
sed的3,$匹配规则:自动匹配从第3行到文件最后一行的所有内容,如果文件总行数≤2,该规则不会命中任何行,脚本不会做额外修改,天然兼容边界场景,不需要额外判断行数s/^/# /是正则替换操作,^匹配行首位置,替换为#即可实现行首加注释的效果-i参数表示直接修改原文件,无需生成临时文件中转
注意:如果是在macOS环境运行,sed的
-i参数需要指定空备份后缀,对应命令改为sed -i '' '3,$ s/^/# /' "$file_path"即可,Linux环境无需调整。
内容的提问来源于stack exchange,提问作者Pratik Mishra
相关产品推荐
相关产品推荐

