bash - 如何在 bash 中注释掉代码行?
问题描述
我需要在 apache 配置中注释掉 3 行:
RewriteEngine On
#RewriteBase /wordpress/
RewriteRule ^index\.php$ - [S=1]
#RewriteCond %{REQUEST_FILENAME} !-f <-
#RewriteCond %{REQUEST_FILENAME} !-d <-
#RewriteRule . index.php [L] <-
1000台机器。
对于所有这些机器,如何通过 ssh 使用 bash 命令注释掉最后 3 行?
样本输入
RewriteEngine On
#RewriteBase /wordpress/
RewriteRule ^index\.php$ - [S=1]
RewriteCond %{REQUEST_FILENAME} !-f <-
RewriteCond %{REQUEST_FILENAME} !-d <-
RewriteRule . index.php [L] <-
样本输出
RewriteEngine On
#RewriteBase /wordpress/
RewriteRule ^index\.php$ - [S=1]
#RewriteCond %{REQUEST_FILENAME} !-f <-
#RewriteCond %{REQUEST_FILENAME} !-d <-
#RewriteRule . index.php [L] <-
解决方案
如果您想注释每个文件的最后三行,您可能应该使用ed
:
ed file <<END
$;#
-2;#
s/[^[:blank:]]/#&/
+s
+s
wq
END
演示:
#!/bin/sh
f=$(mktemp)
trap 'rm "$f"' EXIT
cat >"$f" <<END
RewriteEngine On
#RewriteBase /wordpress/
RewriteRule ^index\.php$ - [S=1]
RewriteCond %{REQUEST_FILENAME} !-f <-
RewriteCond %{REQUEST_FILENAME} !-d <-
RewriteRule . index.php [L] <-
END
ed "$f" <<END >/dev/null
$;#
-2;#
s/[^[:blank:]]/#&/
+s
+s
wq
END
cat "$f"
输出:
RewriteEngine On
#RewriteBase /wordpress/
RewriteRule ^index\.php$ - [S=1]
#RewriteCond %{REQUEST_FILENAME} !-f <-
#RewriteCond %{REQUEST_FILENAME} !-d <-
#RewriteRule . index.php [L] <-
推荐阅读
- aws-lambda - 使用无服务器使用 GRAND 堆栈部署 Apollo 的问题
- haskell - 列出更高种类类型的实例
- vhdl - VHDL有没有办法在模拟过程中读取当前的增量
- .net - 控制台应用程序的拖放事件处理程序
- django - Django Statics 无法访问(数字海洋)
- database - 将数据库结果存储在本地存储中以增加加载时间?
- python - Python中正则表达式的每个位置的子字符串
- sql - 如何将日期转换为正确的格式并从中获得最大、最小范围?
- integration - Thingsboard中动态创建设备的访问令牌有什么用?
- android - 根据我的课程选择获取学院列表