Co to jest polecenie uniksowe do usuwania pierwszych n znaków linii?
Na przykład, mogę chcieć:
tail -f logfile | grep org.springframework | <command to remove first N characters>
Myślałem, że tr
może być w stanie to zrobić, ale nie jestem pewien.
6 answers
Użyj cut
. Np. aby usunąć pierwsze 4 znaki z każdej linii (np. początek na 5. znaku):
tail -f logfile | grep org.springframework | cut -c 5-
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-09 19:06:44
sed 's/^.\{5\}//' logfile
I zamieniasz 5 przez liczbę, którą want...it powinno wystarczyć...
Edytuj
if for each line
sed 's/^.\{5\}//g' logfile
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-09 19:23:06
Możesz użyć cut
:
cut -c N- file.txt > new_file.txt
-c:
znaki
file.txt:
plik wejściowy
new_file.txt:
plik wyjściowy
N-:
znaki od N do końca do wycięcia i wyjścia do nowego pliku.
Może mieć również inne args, takie jak: 'N', 'N-M','- M ' oznaczające odpowiednio n-ty znak, n-ty do M-ty znak, pierwszy do M-ty znak.
To wykona operację dla każdej linii pliku wejściowego.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-28 21:32:31
tail -f logfile | grep org.springframework | cut -c 900-
Usunie pierwszych 900 znaków
cut
używa 900 - aby pokazać 900-ty znak na końcu linii
Jednak jak to wszystko przepuszczam przez grep to nic nie dostaję
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-08 17:11:36
Myślę, że awk
byłoby do tego najlepszym narzędziem, ponieważ może zarówno filtrować, jak i wykonywać niezbędne funkcje manipulacji łańcuchami na filtrowanych liniach:
tail -f logfile | awk '/org.springframework/ {print substr($0, 6)}'
Lub
tail -f logfile | awk '/org.springframework/ && sub(/^.{5}/,"",$0)'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-11 17:18:57
Oto prosta funkcja, przetestowana w bash. 1. param funkcji to string, 2. param to liczba znaków do usunięcia
function stringStripNCharsFromStart {
echo ${1:$2:${#1}}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-17 14:17:03