bash - 使用具有不同分隔符的 Sed 替换整行
问题描述
之前在下面的 url 中询问过此问题,但仅使用正斜杠作为分隔符。 https://stackoverflow.com/a/11245501/2520289
什么是正确的语法来做完全相同的事情,但使用任何其他兼容的 sed 分隔符?
为了在大多数 bash 环境中通用兼容性,我更改了分隔符。(git-bash/任何 linux)
例如,我目前正在执行以下代码段来替换特定字符串的任何匹配项,但不是整行。
function misc_findReplace()
{
VARIABLE_FIND="$1"
VARIABLE_REPLACE="$2"
VARIABLE_FILE="$3"
echo "Finding: $VARIABLE_FIND"
echo "Replacing With: $VARIABLE_REPLACE"
echo "File to Operate On: $VARIABLE_FILE"
sed -i "s@${VARIABLE_FIND}@c${VARIABLE_REPLACE}@g" "$VARIABLE_FILE"
}
FILE_TO_WORK_WITH="/path/to/my/file.properties"
STRING_TO_FIND="destination_hostname=<destination_hostname>"
STRING_TO_REPLACE="destination_hostname=localhost"
misc_findReplace "$STRING_TO_FIND" "$STRING_TO_REPLACE" "$FILE_TO_WORK_WITH"
解决方案
要在 sed 中使用不同的分隔符,您需要使用反斜杠转义第一次出现的字符。这样,正确的命令是
sed -i "\@${VARIABLE_FIND}@c${VARIABLE_REPLACE}" "$VARIABLE_FILE"
推荐阅读
- google-bigquery - 在 BigQuery 中使用案例语句创建新视图
- java - 尝试在我的工具栏上显示项目时遇到问题
- swift - Choppy Animation SwiftUI 嵌套视图
- swift - iOS - 具有多个项目的 Firebase Pod 会导致警告
- python - 如何在python中按下暂停键
- c# - 使用反射将值复制到静态类属性 - System.Reflection.TargetException
- c++ - 为什么按下按钮时调用超类的 OnPaint() 方法?
- perfmon - Jmeter jp@gc - PerfMon Metrics Collector:分析问题
- python - 跨图像行运行卷积的 Keras 自定义层
- kubernetes - Vernemq 端口 1883,具有 haproxy-ingress 和 SSL 终止