Взгляните через mscorlib.dll с Отражателем в аналогичной ситуации, такой как Система. Строка. StringBuilder. Способность использование Microsoft ArgumentOutOfRangeException () подобный:
public int PropertyA
{
get
{
return //etc...
}
set
{
if (condition == true)
{
throw new ArgumentOutOfRangeException("value", "/* etc... */");
}
// ... etc
}
}
Use awk(1)
:
awk ' { print $2" "substr($0,length($0)-8) }'
Здесь я собираюсь утверждать, что perl - лучший выбор, чем awk:
perl -ne 'next if ! (/LATENCY|CMDTYPE=NEW/ && /^\d+.*\s+(.*)\s+.*(.{9})$/); print "$2 $3\n";'
Регулярное выражение является более надежным, позволяя опускать строки, которые не соответствуют более строгому шаблону. Приведенные выше сценарии awk будут видеть переполнение при вызове substr (я, честно говоря, не знаю, что делают отрицательные индексы в awk), если вы скармливаете ему сломанный ввод, например частичные строки из конца журнала.
Нет необходимости использовать grep, awk тоже может это сделать:
awk '/LATENCY/ && /CMDTYPE=NEW/ {print $2 " " substr($0, length($0)-8)}' file
You can use awk
as follows:
grep LATENCY file.log | grep CMDTYPE=NEW | awk '{print $2,substr($0,length($0)-9,9)}'
cut
должен работать
grep something somewhere | grep againsomething | cut -f2 -d' '
Вы можете делать все только с помощью 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