GNU/Linux >> Znalost Linux >  >> Linux

Otestovat rekurzivní vyhledávání a výměnu Sed před spuštěním?

Existuje nějaký způsob, jak spustit zkušební rekurzivní vyhledávání a nahradit pomocí sed , než to skutečně spustíte? Chci jen vytisknout výsledky, než skutečně vyhledám a nahradím. Něco jako opakování výsledků,

grep -rl term1 . |xargs sed -i -e 's/term1/term2/'

Přijatá odpověď:

Můžete spustit sed bez -i a procházejte výstup pomocí less

grep -rl --null term1 . | xargs -0 sed -e 's/term1/term2/' | less

Poté spusťte sed pomocí -i.bak vytvořit zálohy, které můžete následně porovnat

grep -rl --null term1 . | xargs -0 sed -i.bak -e 's/term1/term2/'
diff somefile.bak somefile
# verify changes were correct

Upravit: Jak je navrženo v komentáři, použijte grep --null | xargs -0 . To způsobí, že názvy souborů budou ukončeny null-byte, což je bezpečné pro názvy souborů s neobvyklými znaky, jako je nový řádek. Ano, n je platný znak v unixovém souboru. Jediné zakázané znaky jsou lomítko / a znak nul

Linux
  1. Pomocí Sed k vyhledání a nahrazení čáry mezi rozsahy vzorů

  2. Řez / Grep A Df -h?

  3. Grep And Tail -f?

  1. Příkazový řádek:vyhledejte a nahraďte všechny názvy souborů odpovídající grep

  2. Jak otestovat, na kterém portu MySQL běží a zda se k němu lze připojit?

  3. Vypsat názvy souborů na základě vzoru názvu souboru a obsahu souboru?

  1. Rekurzivní vyhledávání a nahrazování v textových souborech na Macu a Linuxu

  2. Najít a nahradit ve skriptování shellu

  3. najít odpovídající text a nahradit další řádek