Mam plik dziennika ze znacznikami czasu. Czasami w jednym wierszu jest wiele znaczników czasu. Teraz chciałbym usunąć wszystkie znaczniki czasu z linii, ale zachowaj pierwszy.
Mogę to zrobić, s/pattern//2
ale to usuwa tylko drugie wystąpienie i sed
nie pozwala na coś takiego s/pattern//2-
.
Jakieś sugestie?
Odpowiedzi:
Z GNU
sed
:W
2
Określa, że drugi wzór i cała resztag
należy usunąć. To zatrzyma pierwszy.źródło
Powinno to działać (zastąpić _ czymś innym, gdyby kolidowało to z logami):
źródło
\n
.lub bez sed goto:
Ogólne rozwiązania do usunięcia z n-tego (na przykład 3) to:
źródło
Niewielka zmiana w odpowiedzi @ jillagre (zmodyfikowana pod kątem niezawodności) może wyglądać następująco:
... ale w niektórych przypadkach
sed
może być konieczne zastąpienie pon
prawej stronie pierwszegos///
oświadczenia o\n
upartości dosłownym znakiem ewline.źródło