2009-06-09 5 views

ответ

206

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

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

у вас есть представление о том, почему труба не работает? когда я выполняю по существу эту команду, «cut» не выводит результаты в stdout ... если я просто запускаю «tail -f logfile»; cut -c 5- 'я вижу результаты ... проблема должна быть с grep Я использую cygwin FYI спасибо – les2

+0

что происходит, если вы не добавляете последний трубопровод и разрезаете? в основном, если вы удалите последнюю часть строки? – LB40

+0

«загоняет» файл журнала, фильтруя его с помощью grep (т. Е. Все строки с «org.springframework» в них печатаются на стандартный вывод) , когда я добавляю трубку к «разрезанию» ... она висит ОДНАКО, если я удаляю «grep», «cut» работает правильно ... я думаю, что что-то не так с тем, как я использую grep ... может быть тоже cygwin – les2

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

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

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

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

+4

«вырезать -c 1-900» не будет «удалить первые 900 символов» - - он оставит только первые 900 символов.Если вы хотите удалить первые 900 символов, используйте «cut -c 901-» – iammichael

+0

также первые 900 символов в каждой строке, за ответ @ iammichael –

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

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

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

+0

это должно быть скорее 'sed 's/^. \ {, 5 \} //' logfile' – user3719454

12

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

Бесполезное использование' cat', ' cut file.txt -cN-> new_file.txt' будет работать так же хорошо – ChrisWue

1

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

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

или

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

Вот простая функция, испытаны в bash. Первые пары функции является строкой, вторые парами являются количество символов, которые будут лишены

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

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

Смежные вопросы