Что такое команда unix для удаления первых N символов строки?

Например, я могу:

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

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

Ответ 1

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

tail -f logfile | grep org.springframework | cut -c 5-

Ответ 2

sed 's/^.\{5\}//' logfile 

и вы заменяете 5 на нужный номер... он должен сделать трюк...

ИЗМЕНИТЬ если для каждой строки sed 's/^.\{5\}//g' logfile

Ответ 3

Вы можете использовать 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

tail -f logfile | grep org.springframework | cut -c 900-

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

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

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

Ответ 5

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

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

или

tail -f logfile | awk '/org.springframework/ && sub(/^.{5}/,"",$0)'

Ответ 6

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

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

Использование: введите описание изображения здесь