Anda dapat menggunakan sed:
sed -i 's/MyCar on/MyCar off/' path/to/file
Anda dapat melakukan ini hanya dengan shell. Contoh ini menggunakan pernyataan kasus yang tidak perlu untuk contoh khusus ini, tetapi saya menyertakannya untuk menunjukkan bagaimana Anda dapat memasukkan beberapa penggantian. Meskipun kodenya lebih besar dari sed 1-liner, kode ini biasanya jauh lebih cepat karena hanya menggunakan shell bawaan (sebanyak 20x untuk file kecil).
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}"
untuk kasus sederhana seseorang dapat menghilangkan pernyataan kasus:
while read LINE || [ "$LINE" ]; do
OUTPUT="${OUTPUT}${LINE//$REPLACEOLD/$WITHNEW}
"; done < "${FILE}"
printf "${OUTPUT}" > "${FILE}"
Catatan:...|| [ "$LINE" ]... bit adalah untuk mencegah hilangnya baris terakhir dari file yang tidak diakhiri dengan baris baru(sekarang Anda tahu setidaknya satu alasan mengapa editor teks Anda terus menambahkannya)