Вы можете использовать разрез, чтобы получить что-то между разделителями вроде _
.
Если вы хотите, чтобы перенаправить его в другой файл, используйте
cut -d"_" -f4 logfile > otherfile
Вы можете сделать что-то подобное с sed
, но вам нужно будет сказать СЭД, что ему придется пропустить шаблон [^_]*_
(символ, кроме подчеркивания неоднократного 0 или более раз), а затем подчеркивание). Вы должны пропустить этот (шаблон) {3} раз с ^
начала строки.
Вторая строка, которую вы соответствуете ([^_]*)
, является той частью, которую вы хотите. .*
- это остальная часть линии и является мусором.
В первой части sed будет записано 2 строки, поэтому вспомните \2
, чтобы получить вторую.
Вместе с обратной косой черты вы будете иметь
sed 's/^\([^_]*_\)\{3\}\([^_]*\).*/\2/' logfile
Я не проверял команду sed
, то cut
лучше.
Пробовали ли вы что-то вроде 'вырезать -d "-" -f4'? –
i dont как как использовать разрез. я использую его с sed? – Rich
Просьба уточнить вопрос и предоставить минималистский пример ввода, ожидаемого результата и кода, который вы пробовали. – peak