GNU/Linux >> Znalost Linux >  >> Linux

Sed One-liner smazat vše mezi párem držáků?

Pracuji s nějakým textem, který je plný věcí v hranatých závorkách [], které nechci. Vzhledem k tomu, že mohu závorky smazat sám, nepotřebuji, aby to udělala za mě jedna vložka, ale potřebuji jedno vložku, která odstraní vše mezi nimi.

A co závorky () místo hranatých závorek?

Přijatá odpověď:

Nahraďte [some text] podle prázdného řetězce. Za předpokladu, že nechcete analyzovat vnořené závorky, some text nemůže obsahovat žádné hranaté závorky.

sed -e 's/[[^][]*]//g'

Všimněte si, že v závorce výraz [^][] aby odpovídala čemukoli kromě [ nebo ] , ] musí být první. Obvykle ] ukončí znakovou sadu, ale pokud je to první znak v sadě (zde za ^ doplňkový znak), ] stojí sám za sebe.

Pokud chcete analyzovat vnořené závorky nebo pokud text v závorkách může zahrnovat více řádků, sed není ten správný nástroj.


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

  2. Linux – všechno je soubor?

  3. Sed:Smazat všechny výskyty řetězce kromě prvního?

  1. Linux – Jak smazat soubory vytvořené mezi dvěma časy?

  2. Jak odstranit více náhodných řádků z textového souboru pomocí Sed?

  3. Rozdíly mezi Sed na Mac Osx a dalšími „standardními“ Sedmi?

  1. Jak odstranit prvních N řádků souboru Ascii pomocí příkazů Shell?

  2. One-liner vs Script?

  3. Odstranit vše mezi druhým a druhým posledním výskytem shody?