подскажите пожалуйста я чайник в этом деле, задаю команду для выборки в вой скрипт на bash
sed -n '$p' //mirror_ext/oracle/BUD/sapbackup/backBUD.logона выводит
bdtjaxyx afd 2006-08-27 00.00.51 2006-08-27 02.26.27 0 5.3286:1 ALL offline_force disk a--k-c 6.10 (86)мне нужно только - bdtjaxyx
Задаю
sed -n '$p' '/^.([a-z]{8})/p' //mirror_ext/oracle/BUD/sapbackup/backBUD.logполучаю
Can't open /^.([a-z]{8})/pПодскажите что не так....
а cut -f' ' -f1 не подойдет?
>а cut -f' ' -f1 не подойдет?
Да тоже самое, я говорю о том как первое слово выбрать, дело в том что с постоянными переменными еще плохо знаю синтаксис...пишу, а результат тот же Can't open [a-z]{8}
sed -n '$p' \[a-z]\{8\}
проще говоря мне нужно выбрать первые 8 символов
>проще говоря мне нужно выбрать первые 8 символовНу так не мучайтесь с sed'ом, используйте cut, как вам уже говорил phpcoder, или awk:
Правда в примере phpcoder'a имеется опечатка:
>cut -f' ' -f1
Надо бы писать так: cut -d' ' -f1 //mirror_ext/oracle/BUD/sapbackup/backBUD.log (таким
образом вы установите пробел в качестве разделителя полей и выберете первое поле).Можете также использовать следующие конструкции:
$ cut -c 1-8 //mirror_ext/oracle/BUD/sapbackup/backBUD.log # Вырезаются первые 8 символов
$ awk '{print $1}' //mirror_ext/oracle/BUD/sapbackup/backBUD.log # Вырезается первое полеP.S. Кстати, а "постоянные переменные" - это что? :-)
>Можете также использовать следующие конструкции:
>$ cut -c 1-8 //mirror_ext/oracle/BUD/sapbackup/backBUD.log # Вырезаются первые 8 символовЭта инструкция даже будет получше моей, т.к. заточена на 8 символов. Просто автор не точно описал нужное задание.
Вообще, sed очень тяжелый инструмент. awk работает много быстрее, а cut для данной задачи самый быстрый вариант.
>>Можете также использовать следующие конструкции:
>>$ cut -c 1-8 //mirror_ext/oracle/BUD/sapbackup/backBUD.log # Вырезаются первые 8 символов
>
>Эта инструкция даже будет получше моей, т.к. заточена на 8 символов. Просто
>автор не точно описал нужное задание.
>
>Вообще, sed очень тяжелый инструмент. awk работает много быстрее, а cut для
>данной задачи самый быстрый вариант.Может ты прав по скорости, я не знаю. Но если надо sed'ом, то я бы сделал так.
$echo -E "bdtjaxyx afd 2006-08-27 00.00.51 2006-08-27 02.26.27 0 5.3286:1 ALL offline_force disk a--k-c 6.10 (86)" |
sed -n -e 's/^\([^ ]*\).*/\1/p'bdtjaxyx
>>>Можете также использовать следующие конструкции:
>>>$ cut -c 1-8 //mirror_ext/oracle/BUD/sapbackup/backBUD.log # Вырезаются первые 8 символов
>>
>>Эта инструкция даже будет получше моей, т.к. заточена на 8 символов. Просто
>>автор не точно описал нужное задание.
>>
>>Вообще, sed очень тяжелый инструмент. awk работает много быстрее, а cut для
>>данной задачи самый быстрый вариант.
>
>Может ты прав по скорости, я не знаю. Но если надо sed'ом,
>то я бы сделал так.
>
>$echo -E "bdtjaxyx afd 2006-08-27 00.00.51 2006-08-27 02.26.27 0
> 5.3286:1 ALL
> offline_force
> disk
> a--k-c 6.10 (86)" |
>sed -n -e 's/^\([^ ]*\).*/\1/p'
>
>bdtjaxyxЯ и не заметил, что идет привязка именно к первым 8 символам. Тогда можно так.
echo -E "bdtjaxyx afd 2006-08-27 00.00.51 2006-08-27 02.26.27 0 5.3286:1 ALL offline_force disk a--k-c 6.10 (86)" | sed -n -e 's/^\([[:alnum:]]\{8\}\).*/\1/p'
Спасибо всем откликнувшемся!!!! буду разбираться...