получите часть строки после grep

Взгляните через mscorlib.dll с Отражателем в аналогичной ситуации, такой как Система. Строка. StringBuilder. Способность использование Microsoft ArgumentOutOfRangeException () подобный:

public int PropertyA
{
    get
    {
        return //etc...
    }
    set
    {
        if (condition == true)
        {
            throw new ArgumentOutOfRangeException("value", "/* etc... */");
        }
        // ... etc
    }
}
11
задан Paolo Tedesco 24 September 2009 в 12:58
поделиться

6 ответов

Use awk(1):

awk ' { print $2" "substr($0,length($0)-8) }'
11
ответ дан 3 December 2019 в 04:52
поделиться

Здесь я собираюсь утверждать, что perl - лучший выбор, чем awk:

perl -ne 'next if ! (/LATENCY|CMDTYPE=NEW/ && /^\d+.*\s+(.*)\s+.*(.{9})$/); print "$2 $3\n";'

Регулярное выражение является более надежным, позволяя опускать строки, которые не соответствуют более строгому шаблону. Приведенные выше сценарии awk будут видеть переполнение при вызове substr (я, честно говоря, не знаю, что делают отрицательные индексы в awk), если вы скармливаете ему сломанный ввод, например частичные строки из конца журнала.

2
ответ дан 3 December 2019 в 04:52
поделиться

Нет необходимости использовать grep, awk тоже может это сделать:

awk '/LATENCY/ && /CMDTYPE=NEW/ {print $2 " " substr($0, length($0)-8)}' file
0
ответ дан 3 December 2019 в 04:52
поделиться

You can use awk as follows:

grep LATENCY file.log | grep CMDTYPE=NEW | awk '{print $2,substr($0,length($0)-9,9)}'
1
ответ дан 3 December 2019 в 04:52
поделиться

cut должен работать

grep something somewhere | grep againsomething | cut -f2 -d' '
9
ответ дан 3 December 2019 в 04:52
поделиться

Вы можете делать все только с помощью sed:

$ echo "234432 12:44:22.432095 LATENCY blah CMDTYPE=NEW foo bar 123456789" | \
sed -n '/LATENCY/!b;/CMDTYPE=NEW/!b;s/^.\+\s\+\([0-9:.]\+\)\s.\+\(.........\)$/\1 \2/; p'
12:44:22.432095 123456789
0
ответ дан 3 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: