Что такое команда unix для удаления первых N символов строки? - PullRequest
189 голосов
/ 09 июня 2009

Например, я могу захотеть:

tail -f logfile | grep org.springframework | <command to remove first N characters>

Я думал, что tr может иметь возможность сделать это, но я не уверен.

Ответы [ 6 ]

292 голосов
/ 09 июня 2009

Используйте cut. Например. убрать первые 4 символа каждой строки (то есть начать с 5-го символа):

tail -f logfile | grep org.springframework | cut -c 5-
43 голосов
/ 09 июня 2009
sed 's/^.\{5\}//' logfile 

и вы заменяете 5 на желаемое число ... это должно сработать ...

EDIT если для каждой строки sed 's/^.\{5\}//g' logfile

22 голосов
/ 06 июля 2015

Вы можете использовать cut:

cut -c N- file.txt > new_file.txt

-c: символов

file.txt: входной файл

new_file.txt: выходной файл

N-: Символы от N до конца будут вырезаны и выведены в новый файл.

Может также иметь другие аргументы, такие как: 'N', 'N-M', '-M', означающие n-й символ, с n-го по m-й символ, с первого по m-й символ соответственно.

Это выполнит операцию для каждой строки входного файла.

4 голосов
/ 09 июня 2009
tail -f logfile | grep org.springframework | cut -c 900-

удалит первые 900 символов

cut использует 900-, чтобы показать 900-й символ до конца строки

однако, когда я передаю все это через grep, я ничего не получаю

3 голосов
/ 11 февраля 2017

Я думаю, awk будет лучшим инструментом для этого, так как он может фильтровать и выполнять необходимые функции манипуляции со строками на отфильтрованных строках:

tail -f logfile | awk '/org.springframework/ {print substr($0, 6)}'

или

tail -f logfile | awk '/org.springframework/ && sub(/^.{5}/,"",$0)'
1 голос
/ 17 ноября 2017

Вот простая функция, протестированная в bash. 1-й параметр функции - строка, 2-й параметр - количество символов, которые нужно удалить

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

Использование: enter image description here

...