Sie könnten sed:
verwendensed -i 's/MyCar on/MyCar off/' path/to/file
Sie können dies nur mit Shell tun. Dieses Beispiel verwendet eine unnötige case-Anweisung für dieses spezielle Beispiel, aber ich habe sie eingefügt, um zu zeigen, wie Sie mehrere Ersetzungen integrieren können. Obwohl der Code größer als ein sed 1-Liner ist, ist er normalerweise viel schneller, da er nur Shell-Builts verwendet (bis zu 20x für kleine Dateien).
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}"
für den einfachen Fall könnte man die case-Anweisung weglassen:
while read LINE || [ "$LINE" ]; do
OUTPUT="${OUTPUT}${LINE//$REPLACEOLD/$WITHNEW}
"; done < "${FILE}"
printf "${OUTPUT}" > "${FILE}"
Hinweis:die ...|| [ "$LINE" ]... Bit soll verhindern, dass die letzte Zeile einer Datei verloren geht, die nicht mit einer neuen Zeile endet (jetzt kennen Sie mindestens einen Grund, warum Ihr Texteditor diese immer hinzufügt)