Na przykład chcę:Co to jest polecenie unix do usuwania pierwszych N znaków linii?
tail -f logfile | grep org.springframework | <command to remove first N characters>
Myślałam że tr
może mieć możliwość, aby to zrobić, ale nie jestem pewien.
Na przykład chcę:Co to jest polecenie unix do usuwania pierwszych N znaków linii?
tail -f logfile | grep org.springframework | <command to remove first N characters>
Myślałam że tr
może mieć możliwość, aby to zrobić, ale nie jestem pewien.
Użyj cut
. Na przykład. rozebrać 4 pierwsze znaki każdego wiersza (czyli rozpocząć na 5th char):
tail -f logfile | grep org.springframework | cut -c 5-
tail -f logfile | grep org.springframework | cut -c 900-
usunęłaby pierwsze 900 znaków
cut
używa 900- pokazać 900-ną znak końca linii
jednak kiedy rura to wszystko przez grep nie rozumiem dowolne:
"cut -c 1-900" nie będzie "usunąć pierwsze 900 znaków" - - pozostawi tylko pierwszych 900 znaków.Jeśli chcesz usunąć pierwsze 900 znaków, użyj "cut -c 901-" – iammichael
również pierwszych 900 znaków w każdej linii, na odpowiedź @ iammichael –
sed 's/^.\{5\}//' logfile
i zastąpić 5 przez liczbę chcesz ... powinno załatwić sprawę ...
EDIT jeśli dla każdej linii sed 's/^.\{5\}//g' logfile
powinno to być raczej' sed 's/^. \ {, 5 \} //' logfile' – user3719454
można użyć cut
:
cut -c N- file.txt > new_file.txt
-c:
znaków
file.txt:
plików wejściowych
new_file.txt:
plik wyjściowy
N-:
Postacie z N do końca być cięte i wyjście do nowego pliku.
Może również zawierać inne argumenty: "N", "N-M", "-M" oznaczające n-ty znak, od n-tego do mth znaków, od pierwszego do mth znaku odpowiednio.
Spowoduje to wykonanie operacji dla każdej linii pliku wejściowego.
Bezużyteczne użycie 'cat',' cut file.txt -cN-> new_file.txt' będzie działać równie dobrze – ChrisWue
myślę awk
byłoby najlepszym narzędziem do tego, jak to może zarówno filtr i wykonać niezbędne funkcje manipulacji ciąg filtrowanych wierszach:
tail -f logfile | awk '/org.springframework/ {print substr($0, 6)}'
lub
tail -f logfile | awk '/org.springframework/ && sub(/^.{5}/,"",$0)'
czy masz pojęcie, dlaczego rura nie działa? kiedy uruchamiam w zasadzie to polecenie, "cut" nie drukuje wyników na standardowe wyjście ... jeśli po prostu wykonuję 'tail -f logfile | cut -c 5- "widzę wyniki ... problem musi być z grep Używam cygwin FYI dziękuję – les2
co się stanie, jeśli nie dodasz ostatniej rury i nie obetniesz? zasadniczo, jeśli usuniesz ostatnią część linii? – LB40
"pobiera" plik dziennika, filtrując go grep (tj. Wszystkie linie z "org.springframework" w nich są drukowane na standardowe wyjście) kiedy dodaję rurę do "cięcia" ... wisi JEDNAK, jeśli wyeliminuję "grep", "cięcie" działa prawidłowo ... myślę, że coś jest nie tak z tym, jak używam grep ... może być też cygwinem – les2