随机
Enter 搜索 ↑↓ 切换 Esc 清空

script-del-comment

命令

批量删除脚本缩进注释行

补充说明

需求:删除行首带有空格 / 空白字符开头的独立注释行( # 注释);保留顶格 # 注释;保留代码行末尾附带的注释。

直接使用 sed -i '/^[[:space:]]+#/d' 删除行,会移除换行符破坏行结构,在反斜杠续行场景下可能引发问题,改用 awk 方案更安全:

# 1. 使用awk过滤:删除行首空白+#的独立注释行,输出到新文件(不改动原脚本)
awk '!/^[[:space:]]+#/' /vol2/1000/tmp/mobufan.sh > /vol2/1000/tmp/mobufan_new.sh

# 2. Bash语法校验新脚本,无输出代表语法正常
bash -n /vol2/1000/tmp/mobufan_new.sh

# 3. 清除Windows CRLF换行符^M,避免运行异常
sed -i 's/\r$//' /vol2/1000/tmp/mobufan_new.sh

# 4. 备份原有脚本(命名为损坏旧文件)
cp /vol2/1000/tmp/mobufan.sh /vol2/1000/tmp/mobufan_old_broken.sh

# 5. 将处理完成的新脚本替换原脚本
cp /vol2/1000/tmp/mobufan_new.sh /vol2/1000/tmp/mobufan.sh

# 6. 添加执行权限
chmod +x /vol2/1000/tmp/mobufan.sh

# 7. 运行脚本测试
/vol2/1000/tmp/mobufan.sh

规则说明

行内容 处理结果
# 缩进注释 ✅ 删除
# 顶格注释 ✅ 保留
echo test # 行尾注释 ✅ 保留

⚠️ 风险提醒

  1. 如果脚本存在反斜杠续行中间插入缩进注释,awk 依旧会删除该注释行,可能改变代码逻辑,需要人工复核这类特殊代码段。
# 示例高危代码,处理后会合并两行
echo "hello" \
    # 这行会被awk删除
    "world"
  1. 操作前务必保留备份文件,出现问题可快速回滚。

回滚命令(如需恢复旧脚本)

cp /vol2/1000/tmp/mobufan_old_broken.sh /vol2/1000/tmp/mobufan.sh

可选附加:清理多余空白行(按需执行)

# 预览效果
sed '/^[[:space:]]*$/d' /vol2/1000/tmp/mobufan.sh
# 原地删除空行
sed -i '/^[[:space:]]*$/d' /vol2/1000/tmp/mobufan.sh

相关命令