GNU/Linux >> Znalost Linux >  >> Linux

Co je špatného s mým předběžným regulárním výrazem v GNU sed?

sed -i '/^foo/! s/^/bar/' file.txt
  • -i změnit soubor na místě
  • /^foo/! proveďte další akci pouze na řádcích ne ! začínající foo ^foo
  • s/^/bar/ změňte začátek řádku na pruh

Pokud vím, sed nemá ani pohled dopředu, ani pohled dozadu. Přejděte na výkonnější jazyk s podobnou syntaxí, například perl .


Používáte syntaxi regulárního výrazu (PCRE) kompatibilního s perl, kterou GNU sed nepodporuje. Měli byste přepsat svůj regulární výraz podle SED Regular-Expressions nebo použít perl místo toho.

Všimněte si, že SED nemá dopředný náhled, a proto nepodporuje funkci regulárního výrazu, kterou jste se snažili použít. Lze to provést v SED pomocí jiných funkcí, jak již uvedli jiní.


Linux
  1. Doplnění s „sed“?

  2. Smazání všech C komentářů se Sedem?

  3. Co dělá Gnome s multimediálními klávesami?

  1. Co dělá poll() s časovým limitem 0?

  2. Co je špatného na linux/if.h a net/if.h?

  3. Co je ?=v Makefile

  1. Rozdělte disk na Linuxu pomocí GNU Parted

  2. Co je špatného na mém bash skriptu, který ponechává posledních x souborů a zbytek smaže?

  3. Vykreslete soubor .gnu pomocí gnuplot