2009-06-09 8 views

Odpowiedz

206

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- 
+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

+0

co się stanie, jeśli nie dodasz ostatniej rury i nie obetniesz? zasadniczo, jeśli usuniesz ostatnią część linii? – LB40

+0

"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

2
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:

+4

"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

+0

również pierwszych 900 znaków w każdej linii, na odpowiedź @ iammichael –

30
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

+0

powinno to być raczej' sed 's/^. \ {, 5 \} //' logfile' – user3719454

12

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.

+4

Bezużyteczne użycie 'cat',' cut file.txt -cN-> new_file.txt' będzie działać równie dobrze – ChrisWue

1

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)' 
0

Oto prosta funkcja, przetestowany w bash. 1-ta param funkcji jest ciąg, 2nd param jest liczba znaków, które mają być pozbawione

function stringStripNCharsFromStart { echo ${1:$2:${#1}} }

Zastosowanie: enter image description here

Powiązane problemy