| imho.ws |
![]() |
|
|
|
# 1 |
|
Full Member
Регистрация: 16.09.2003
Сообщения: 793
![]() ![]() ![]() ![]() ![]() |
cut, sed, awk and Co - Вопросы по парзингу
Не могу понять как мне из строчки соcтояшей скорее из одного слова прочитать превый символ?
Я так понял что с sed можно.. но чтото мои попытки не срабатывают ![]() P.S. Частенько нужны всякие такие вещи поэтому я топик так назвал сразу. |
|
|
|
|
# 2 |
|
Member
Регистрация: 18.11.2005
Сообщения: 254
![]() ![]() ![]() ![]() |
Дарагой, зачэм sed, зачэм awk :-) Имхо в данном случае можно и без них обойтись средствами bash.
#!/bin/bash echo ${1:0:1} $1 - это входной параметр который ты bash-скрипту подаешь когда вызываешь его из командной строки, это может быть слово, число итд ${1:0:1} - означает что в массиве $1 нас интересуют элементы с 0 по 1, то есть самый первый элемент(символ) массива. |
|
|
|
|
# 3 |
|
Добряк Модератор
ГлавБюстАтценка АН ИМХО.ВС Регистрация: 14.10.2002
Адрес: Старый оценщик, НИИ ГлавБюстАтценка АН ИМХО.ВС
Пол: Male
Сообщения: 4 010
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
cut -c1-1
__________________
Лень - это когда видишь необходимость что-то делать, но не хочется, а влом - это когда что-то хочется, но не видишь необходимости это делать. |
|
|
|
|
# 8 |
|
Full Member
Регистрация: 16.09.2003
Сообщения: 793
![]() ![]() ![]() ![]() ![]() |
Уважаемые знатоки продулжу..
например лежи у меня скрипт в /root/lala/lala.sh в PATH его нет, вызывать его надо из различных текущих каталогов указанием абсолутног пути. Но скрипт это в свою очередь вызывет другой подскрипт кторый всегда лежит в том же каталоге что и lala.sh Так вот Как в скрипте lala.sh сделать правильный иклуд другово скрипата? Условие абсолютный путь прописаь нельзя.. Пояняю в lala.sh есть инклуд типа. includefile=file.inc . $includefile Данный вариант работает только при вызове из ттгоже каталока где лежат скрипты.. Как генерализировать да попрощё? |
|
|
|
|
# 10 | |
|
Добряк Модератор
ГлавБюстАтценка АН ИМХО.ВС Регистрация: 14.10.2002
Адрес: Старый оценщик, НИИ ГлавБюстАтценка АН ИМХО.ВС
Пол: Male
Сообщения: 4 010
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Ну а далее остается добавить имя инклуда.
__________________
Лень - это когда видишь необходимость что-то делать, но не хочется, а влом - это когда что-то хочется, но не видишь необходимости это делать. |
|
|
|
|
|
# 11 | ||
|
Full Member
Регистрация: 16.09.2003
Сообщения: 793
![]() ![]() ![]() ![]() ![]() |
Цитата:
Цитата:
to 4to nuschno! ne snal 4to est takaja komanda. thx! |
||
|
|
|
|
# 12 |
|
Full Member
Регистрация: 16.09.2003
Сообщения: 793
![]() ![]() ![]() ![]() ![]() |
А вот теперь такая задачка..
надо 1. из лог файла прочитать скажем 50 последних строк. 2. анализировать построчно. в анализе выявить строчеку короая например содержит выражение в переменной $expression1. 3. было бы круто еще и заданую часть выявленной в пункте 2 строчки получить но я думаю я это с awk смогу.. так что пункты 1 и 2 пока важнее зарание спасибо! |
|
|
|
|
# 16 |
|
Full Member
Регистрация: 16.09.2003
Сообщения: 793
![]() ![]() ![]() ![]() ![]() |
А теперь такая задача ест..
Код:
for file in `find $1 -cmin -$2`
do
if [ -f $file ]
then
echo "$file"
else
echo "DIR: $file";
fi
done
Находятся также каталоги и они выдаются с пометкой "DIR:" Однако это код имеет баг! Если изменены файла в которых есть пробел (а может и дургие разделители не пробовал) то цикл начинает выдвать чушь. типа если есть фал /home/user/li4nij fail log тидопустим только он был изменён то для цикла будет 3 токена. хотя по смыслу должен быть один.. Как сделать так чтобы на спотыкаться на этом? |
|
|
|
|
# 17 |
|
Full Member
Регистрация: 16.10.2002
Адрес: ArchLinux, Internet
Сообщения: 557
![]() ![]() ![]() ![]() |
Интересный вопрос
![]() решение взял из http://www.tldp.org/LDP/abs/html/loops1.html Код:
/tmp/orm>ls -l total 0 -rw-r--r-- 1 xxx users 0 2006-07-01 23:55 1 -rw-r--r-- 1 xxx users 0 2006-07-01 23:55 2 -rw-r--r-- 1 xxx users 0 2006-07-01 23:55 3 4 GOOD: /tmp/orm>for f in "$( find .)"; do echo "$f"; done . ./1 ./2 ./3 4 BAD: /tmp/orm>for f in `find .`; do echo $f; done . ./1 ./2 ./3 4 |
|
|
|
|
# 18 |
|
Full Member
Регистрация: 16.09.2003
Сообщения: 793
![]() ![]() ![]() ![]() ![]() |
Круто спасибо!
Но вот только теперь тэст в теле цыкла Код:
if [ -f $file ]
then
echo "$file"
else
echo "DIR: $file";
fi
В первый файл он опредиляет как "DIR:" А все остальные без "DIR." Хотя find выдает и каталоги что-то не пойму почему так происходит. Цыкл вроде нормально выглядит. Если к стати вставить -d вместо -f то вывод не меняется вообще Не пойму где ошибка.???
Последний раз редактировалось shuron; 02.07.2006 в 15:01. |
|
|
|
|
# 19 |
|
Full Member
Регистрация: 16.10.2002
Адрес: ArchLinux, Internet
Сообщения: 557
![]() ![]() ![]() ![]() |
google рулит...
Код:
find . | while read f
do
if [ -f "$f" ]
then
echo "FILE $f"
else
echo "DIR: $f"
fi
done
total 36 drwxr-xr-x 2 4096 Jul 2 16:53 d1 drwxr-xr-x 2 4096 Jul 2 16:53 d 1 -rw-r--r-- 1 0 Jul 2 16:52 f1 -rw-r--r-- 1 0 Jul 2 16:52 f2 -rw-r--r-- 1 0 Jul 2 16:53 f 3 -rw-r--r-- 1 48 Jul 2 17:06 test.sh |
|
|
|
|
# 20 |
|
Full Member
Регистрация: 16.09.2003
Сообщения: 793
![]() ![]() ![]() ![]() ![]() |
da dejstwitelno eto rabotaet! google rulit.. tolko daschene snal 4to iskat..
i schas ne sowsem jasno po4emu tot warinat ne rabotal.. nu pofig, glawnoe 4to rabotaet etot.! ![]() А у меня тут уже новая проблема! В вышеуказанной задаче мне нужен второй правметр для find Это величниа в минутах. Она еевляется разницей текушего времени и времени последнего изменения указаного каталога! И всё должно быть в минутах! тоесть: Код:
time (in min) = toMinutes( getCurrentTime() - modTimeOf(somedir)) Ну дату кактлога я могу прочитать например так: ls -l --time=ctime somedir | awk '{print $6}' и время аналогично. но формат конечно не тот. приходится умножать и считать. и также с текущим времем.. и всё для того чтобы отнять их дург от друга и получить минуты.. Конечная цель цикла же проити по файлам одного каталога и посмотреть если в бэкап-каталоге файлы бывшие измененённые с момента создания предыидущего снапшота (другой каталог) и удалить их в бэкупкаталоге. короче всё уже есть фот только с минутами геморой получается.. есть идеи?
Последний раз редактировалось shuron; 02.07.2006 в 23:23. |
|
|