imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Программы и Операционные системы > Пингвинятник (ОС *NIX)
Опции темы
Старый 20.06.2006, 22:48     # 1
shuron
Full Member
 
Аватар для shuron
 
Регистрация: 16.09.2003
Сообщения: 793

shuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царстве
cut, sed, awk and Co - Вопросы по парзингу

Не могу понять как мне из строчки соcтояшей скорее из одного слова прочитать превый символ?

Я так понял что с sed можно.. но чтото мои попытки не срабатывают

P.S. Частенько нужны всякие такие вещи поэтому я топик так назвал сразу.
shuron вне форума  
Старый 21.06.2006, 00:36     # 2
imhoman101
Member
 
Аватар для imhoman101
 
Регистрация: 18.11.2005
Сообщения: 254

imhoman101 Реально крут(а)imhoman101 Реально крут(а)imhoman101 Реально крут(а)imhoman101 Реально крут(а)
Дарагой, зачэм sed, зачэм awk :-) Имхо в данном случае можно и без них обойтись средствами bash.

#!/bin/bash
echo ${1:0:1}

$1 - это входной параметр который ты bash-скрипту подаешь когда вызываешь его из командной строки, это может быть слово, число итд
${1:0:1} - означает что в массиве $1 нас интересуют элементы с 0 по 1, то есть самый первый элемент(символ) массива.
imhoman101 вне форума  
Старый 21.06.2006, 00:37     # 3
rontommy
Добряк Модератор
ГлавБюстАтценка АН ИМХО.ВС
 
Аватар для rontommy
 
Регистрация: 14.10.2002
Адрес: Старый оценщик, НИИ ГлавБюстАтценка АН ИМХО.ВС
Пол: Male
Сообщения: 4 010

rontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербог
rontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербог
cut -c1-1
__________________
Лень - это когда видишь необходимость что-то делать, но не хочется, а влом - это когда что-то хочется, но не видишь необходимости это делать.
rontommy вне форума  
Старый 21.06.2006, 12:19     # 4
shuron
Full Member
 
Аватар для shuron
 
Регистрация: 16.09.2003
Сообщения: 793

shuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царстве
Спасибо обоим!

Цитата:
Сообщение от imhoman101
#!/bin/bash
echo ${1:0:1}
Про такие дела я и не знал.. надо почитать про масивы в bash
shuron вне форума  
Старый 21.06.2006, 14:16     # 5
shuron
Full Member
 
Аватар для shuron
 
Регистрация: 16.09.2003
Сообщения: 793

shuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царстве
a kak mne srawnit tper eto perwij simvol s 4emni bud
first = `echo $1 | cut -c1`
if [ "$first" -ne "\/" ]


ne rabotaet tam integer oschidaetsa.. a kak char ili string srawniwaetsa?
shuron вне форума  
Старый 21.06.2006, 15:05     # 6
noname
Full Member
 
Аватар для noname
 
Регистрация: 06.03.2003
Адрес: Earth
Сообщения: 761

noname Имеются все основания чтобы гордиться собойnoname Имеются все основания чтобы гордиться собойnoname Имеются все основания чтобы гордиться собойnoname Имеются все основания чтобы гордиться собойnoname Имеются все основания чтобы гордиться собойnoname Имеются все основания чтобы гордиться собойnoname Имеются все основания чтобы гордиться собойnoname Имеются все основания чтобы гордиться собойnoname Имеются все основания чтобы гордиться собойnoname Имеются все основания чтобы гордиться собойnoname Имеются все основания чтобы гордиться собой
http://www.tldp.org/LDP/abs/html/
http://gazette.linux.ru.net/rus/arti...abs-guide.html
__________________
Смерть фашистским оккупантам.
noname вне форума  
Старый 21.06.2006, 15:35     # 7
shuron
Full Member
 
Аватар для shuron
 
Регистрация: 16.09.2003
Сообщения: 793

shuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царстве
iswinjaus, wse prawilno ja neprawoilno tam posmotrel..
stringi podrugomu srawniwajutsa..
teper wse paschet
thx
shuron вне форума  
Старый 22.06.2006, 15:50     # 8
shuron
Full Member
 
Аватар для shuron
 
Регистрация: 16.09.2003
Сообщения: 793

shuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царстве
Уважаемые знатоки продулжу..
например лежи у меня скрипт в /root/lala/lala.sh

в PATH его нет, вызывать его надо из различных текущих каталогов указанием абсолутног пути.

Но скрипт это в свою очередь вызывет другой подскрипт кторый всегда лежит в том же каталоге что и lala.sh

Так вот Как в скрипте lala.sh сделать правильный иклуд другово скрипата?
Условие абсолютный путь прописаь нельзя..

Пояняю в lala.sh есть инклуд типа.
includefile=file.inc
. $includefile


Данный вариант работает только при вызове из ттгоже каталока где лежат скрипты..
Как генерализировать да попрощё?
shuron вне форума  
Старый 22.06.2006, 16:26     # 9
xoy
Junior Member
 
Регистрация: 22.05.2006
Пол: Male
Сообщения: 55

xoy Известность не заставит себя ждатьxoy Известность не заставит себя ждать
а как на счет смены текущего каталога в окружении первого скрипта?
чем не устраивает?
xoy вне форума  
Старый 22.06.2006, 17:49     # 10
rontommy
Добряк Модератор
ГлавБюстАтценка АН ИМХО.ВС
 
Аватар для rontommy
 
Регистрация: 14.10.2002
Адрес: Старый оценщик, НИИ ГлавБюстАтценка АН ИМХО.ВС
Пол: Male
Сообщения: 4 010

rontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербог
rontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербогrontommy Гипербог
Цитата:
shuron:
Так вот Как в скрипте lala.sh сделать правильный иклуд другово скрипата?
Условие абсолютный путь прописаь нельзя..

Пояняю в lala.sh есть инклуд типа.
includefile=file.inc
. $includefile
script_dir_name="`dirname $0`"
Ну а далее остается добавить имя инклуда.
__________________
Лень - это когда видишь необходимость что-то делать, но не хочется, а влом - это когда что-то хочется, но не видишь необходимости это делать.
rontommy вне форума  
Старый 22.06.2006, 19:33     # 11
shuron
Full Member
 
Аватар для shuron
 
Регистрация: 16.09.2003
Сообщения: 793

shuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царстве
Цитата:
Сообщение от xoy
а как на счет смены текущего каталога в окружении первого скрипта?
чем не устраивает?
dlaj etogo nado kakto usnat kuda menajt...

Цитата:
Сообщение от rontommy
script_dir_name="`dirname $0`"
Ну а далее остается добавить имя инклуда.
wot teper wischu kuda..
to 4to nuschno! ne snal 4to est takaja komanda.
thx!
shuron вне форума  
Старый 28.06.2006, 16:02     # 12
shuron
Full Member
 
Аватар для shuron
 
Регистрация: 16.09.2003
Сообщения: 793

shuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царстве
А вот теперь такая задачка..
надо
1. из лог файла прочитать скажем 50 последних строк.
2. анализировать построчно. в анализе выявить строчеку короая например содержит выражение в переменной $expression1.
3. было бы круто еще и заданую часть выявленной в пункте 2 строчки получить но я думаю я это с awk смогу..
так что пункты 1 и 2 пока важнее

зарание спасибо!
shuron вне форума  
Старый 28.06.2006, 16:18     # 13
xoy
Junior Member
 
Регистрация: 22.05.2006
Пол: Male
Сообщения: 55

xoy Известность не заставит себя ждатьxoy Известность не заставит себя ждать
для первых двух пунктов, я обычно делаю так:

tail logfile |grep $expression1
xoy вне форума  
Старый 28.06.2006, 17:03     # 14
Drakosha
Full Member
 
Аватар для Drakosha
 
Регистрация: 16.10.2002
Адрес: ArchLinux, Internet
Сообщения: 557

Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)
ага, только добавь -n в tail

tail -n 50

Drakosha вне форума  
Старый 28.06.2006, 18:54     # 15
shuron
Full Member
 
Аватар для shuron
 
Регистрация: 16.09.2003
Сообщения: 793

shuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царстве
Блин точно! всет ак просто.. я всё еще не привыкну к Pipe.
thx
shuron вне форума  
Старый 01.07.2006, 21:22     # 16
shuron
Full Member
 
Аватар для shuron
 
Регистрация: 16.09.2003
Сообщения: 793

shuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царстве
А теперь такая задача ест..

Код:
for file in `find $1 -cmin -$2`
do

    if [ -f $file ]
    then
        echo "$file"
    else
        echo "DIR: $file";
    fi
done
пре условии что $1 это существующий путь а $2 это время в мнутах это цикл пробегает и выдет на экран все файлы у которых максиму это вреямя назад менялся статус.

Находятся также каталоги и они выдаются с пометкой "DIR:"

Однако это код имеет баг!
Если изменены файла в которых есть пробел (а может и дургие разделители не пробовал) то цикл начинает выдвать чушь.
типа если есть фал
/home/user/li4nij fail log
тидопустим только он был изменён то для цикла будет 3 токена.
хотя по смыслу должен быть один..

Как сделать так чтобы на спотыкаться на этом?
shuron вне форума  
Старый 02.07.2006, 01:35     # 17
Drakosha
Full Member
 
Аватар для Drakosha
 
Регистрация: 16.10.2002
Адрес: ArchLinux, Internet
Сообщения: 557

Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)
Интересный вопрос
решение взял из 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
Drakosha вне форума  
Старый 02.07.2006, 13:14     # 18
shuron
Full Member
 
Аватар для shuron
 
Регистрация: 16.09.2003
Сообщения: 793

shuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царстве
Круто спасибо!

Но вот только теперь тэст в теле цыкла
Код:
    if [ -f $file ]
    then
        echo "$file"
    else
        echo "DIR: $file";
    fi
как-то не срабатывает..
В первый файл он опредиляет как "DIR:"
А все остальные без "DIR." Хотя find выдает и каталоги
что-то не пойму почему так происходит. Цыкл вроде нормально выглядит. Если к стати вставить -d вместо -f то вывод не меняется вообще
Не пойму где ошибка.???

Последний раз редактировалось shuron; 02.07.2006 в 15:01.
shuron вне форума  
Старый 02.07.2006, 18:45     # 19
Drakosha
Full Member
 
Аватар для Drakosha
 
Регистрация: 16.10.2002
Адрес: ArchLinux, Internet
Сообщения: 557

Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)
google рулит...

Код:
find . | while read f
do
    if [ -f "$f" ]
    then 
        echo "FILE $f"
    else        
        echo "DIR: $f"
    fi
done
bash-3.00$ ls -l
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
Drakosha вне форума  
Старый 02.07.2006, 20:14     # 20
shuron
Full Member
 
Аватар для shuron
 
Регистрация: 16.09.2003
Сообщения: 793

shuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царствеshuron Луч света в тёмном царстве
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.
shuron вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 13:43.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.