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


например, я мог бы хотеть:

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

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

6 162

6 ответов:

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

tail -f logfile | grep org.springframework | cut -c 5-
sed 's/^.\{5\}//' logfile 

и вы заменяете 5 на число, которое вы want...it должен сделать трюк...

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

можно использовать cut:

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

-c: символы

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

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

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

также может иметь другие аргументы, такие как: 'Н' , 'Н-м', '-м' значение n-го персонажа, энный мес персонажа, первый мес персонажа соответственно.

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

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

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

cut использует 900-для отображения 900-го символа в конце строки

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

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

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

или

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

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

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

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