我有一个文本文件,里面有很多行。 其中有一行是: MyCar on
我该如何关闭我的车?
我有一个文本文件,里面有很多行。 其中有一行是: MyCar on
我该如何关闭我的车?
你可以使用sed:
sed -i 's/MyCar on/MyCar off/' path/to/file
你可以仅使用 shell 来完成此操作。此示例对于这个特定示例使用了一个不必要的 case 语句,但我包含它是为了展示如何结合多个替换。虽然代码比 sed 1-liner 更大,但通常更快,因为它仅使用 shell 内置命令(对于小文件可高达 20 倍)。
REPLACEOLD="old"
WITHNEW="new"
FILE="tmpfile"
OUTPUT=""
while read LINE || [ "$LINE" ]; do
case "$LINE" in
*${REPLACEOLD}*)OUTPUT="${OUTPUT}${LINE//$REPLACEOLD/$WITHNEW}
";;
*)OUTPUT="${OUTPUT}${LINE}
";;
esac
done < "${FILE}"
printf "${OUTPUT}" > "${FILE}"
对于简单情况,可以省略 case 语句:
while read LINE || [ "$LINE" ]; do
OUTPUT="${OUTPUT}${LINE//$REPLACEOLD/$WITHNEW}
"; done < "${FILE}"
printf "${OUTPUT}" > "${FILE}"
使用sed与变量;
host=$(hostname)
se1=$(cat /opt/splunkforwarder/etc/system/local/server.conf | grep serverName)
sed -i "s/${se1}/serverName = ${host}/g" /opt/splunkforwarder/etc/system/local/server.conf`
当你在文件内时,请尝试使用以下命令:
:%s/old test/new text/g
sed
的很棒的介绍。 - user5395338