GNU/Linux >> Znalost Linux >  >> Linux

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

Mám logfile s časovými razítky v něm. Občas je v jednom řádku více časových razítek. Nyní bych rád odstranil všechna časová razítka z řádku, ale ponechal první.

Umím s/pattern//2 ale tím se odstraní pouze druhý výskyt a sed neumožňuje něco jako s/pattern//2- .

Nějaké návrhy?

Přijatá odpověď:

S GNU sed :

sed 's/pattern//2g'

2 určuje, že druhý vzor a všechny ostatníg by měl odstranit. Takže toto zůstane první.


Linux
  1. Jak vložit text před první řádek souboru?

  2. Odebrat všechny soubory/adresáře kromě jednoho souboru?

  3. Vrátit pouze odpovídající řetězec v Sed?

  1. Smazat všechny soubory kromě určitého podadresáře pomocí funkce Najít?

  2. Smazat všechny soubory ve složce kromě posledních (nejnovějších) 20?

  3. Zobrazit všechny soubory až do shody?

  1. Smazat staré soubory protokolu kromě posledního (alfanumericky seřazené)?

  2. Nahradit všechny nové řádky mezerníkem kromě posledního?

  3. Použijte Najít k nalezení určitého adresáře a odstranění všech souborů v něm kromě jednoho adresáře?