GNU/Linux >> Znalost Linux >  >> Linux

Jak změnit slovo v souboru pomocí skriptu linux shell

Můžete použít sed:

sed -i 's/MyCar on/MyCar off/' path/to/file

Můžete to udělat pouze pomocí shellu. Tento příklad používá pro tento konkrétní příklad zbytečný případ, ale zahrnul jsem jej, abych ukázal, jak byste mohli začlenit více náhrad. Ačkoli je kód větší než sed 1-liner, je obvykle mnohem rychlejší, protože používá pouze zabudované shelly (až 20x pro malé soubory).

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}"

pro jednoduchý případ lze vynechat příkaz case:

while read LINE || [ "$LINE" ]; do
    OUTPUT="${OUTPUT}${LINE//$REPLACEOLD/$WITHNEW}
"; done < "${FILE}"
printf "${OUTPUT}" > "${FILE}"

Poznámka:...|| [ "$LINE" ]... bit je zabránit ztrátě posledního řádku souboru, který nekončí novým řádkem (teď znáte alespoň jeden důvod, proč je váš textový editor stále přidává)


Linux
  1. Jak zobrazit nebo změnit ACL v souborech Linux

  2. Jak vytvořit dočasný soubor ve skriptu Shell?

  3. Jak napsat soubor s C v Linuxu?

  1. Jak změnit Shell v Linuxu

  2. Jak změnit výchozí prostředí v Linuxu

  3. Jak spustit skript shellu při spuštění

  1. Jak změnit oprávnění souborů rekurzivně pomocí chmod v Linuxu

  2. Shell skript změní adresář s proměnnou

  3. Šablony s Linuxem ve skriptu Shell?