![]() |
cut, sed, awk and Co - Вопросы по парзингу
Не могу понять как мне из строчки соcтояшей скорее из одного слова прочитать превый символ?
Я так понял что с sed можно.. но чтото мои попытки не срабатывают :( P.S. Частенько нужны всякие такие вещи поэтому я топик так назвал сразу. |
Дарагой, зачэм sed, зачэм awk :-) Имхо в данном случае можно и без них обойтись средствами bash.
#!/bin/bash echo ${1:0:1} $1 - это входной параметр который ты bash-скрипту подаешь когда вызываешь его из командной строки, это может быть слово, число итд ${1:0:1} - означает что в массиве $1 нас интересуют элементы с 0 по 1, то есть самый первый элемент(символ) массива. |
cut -c1-1
|
Спасибо обоим! :yees:
Цитата:
|
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? |
|
Цитата:
stringi podrugomu srawniwajutsa.. teper wse paschet thx |
Уважаемые знатоки продулжу..
например лежи у меня скрипт в /root/lala/lala.sh в PATH его нет, вызывать его надо из различных текущих каталогов указанием абсолутног пути. Но скрипт это в свою очередь вызывет другой подскрипт кторый всегда лежит в том же каталоге что и lala.sh Так вот Как в скрипте lala.sh сделать правильный иклуд другово скрипата? Условие абсолютный путь прописаь нельзя.. Пояняю в lala.sh есть инклуд типа. includefile=file.inc . $includefile Данный вариант работает только при вызове из ттгоже каталока где лежат скрипты.. Как генерализировать да попрощё? |
а как на счет смены текущего каталога в окружении первого скрипта?
чем не устраивает? |
Цитата:
Ну а далее остается добавить имя инклуда. |
Цитата:
Цитата:
to 4to nuschno! ne snal 4to est takaja komanda. thx! |
А вот теперь такая задачка..
надо 1. из лог файла прочитать скажем 50 последних строк. 2. анализировать построчно. в анализе выявить строчеку короая например содержит выражение в переменной $expression1. 3. было бы круто еще и заданую часть выявленной в пункте 2 строчки получить но я думаю я это с awk смогу.. так что пункты 1 и 2 пока важнее зарание спасибо! |
для первых двух пунктов, я обычно делаю так:
tail logfile |grep $expression1 |
ага, только добавь -n в tail
tail -n 50 :) |
Блин точно! всет ак просто.. я всё еще не привыкну к Pipe.
thx |
А теперь такая задача ест..
Код:
for file in `find $1 -cmin -$2`Находятся также каталоги и они выдаются с пометкой "DIR:" Однако это код имеет баг! Если изменены файла в которых есть пробел (а может и дургие разделители не пробовал) то цикл начинает выдвать чушь. типа если есть фал /home/user/li4nij fail log тидопустим только он был изменён то для цикла будет 3 токена. хотя по смыслу должен быть один.. Как сделать так чтобы на спотыкаться на этом? |
Интересный вопрос :)
решение взял из http://www.tldp.org/LDP/abs/html/loops1.html Код:
/tmp/orm>ls -l |
Круто спасибо!
:yees: :yees: :claps: Но вот только теперь тэст в теле цыкла Код:
if [ -f $file ]В первый файл он опредиляет как "DIR:" А все остальные без "DIR." Хотя find выдает и каталоги :( что-то не пойму почему так происходит. Цыкл вроде нормально выглядит. Если к стати вставить -d вместо -f то вывод не меняется вообще :( Не пойму где ошибка.??? :( :молись: |
google рулит...
Код:
find . | while read ftotal 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 |
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.! :beer: :beer:
А у меня тут уже новая проблема! :eek: :idontnow: В вышеуказанной задаче мне нужен второй правметр для find Это величниа в минутах. Она еевляется разницей текушего времени и времени последнего изменения указаного каталога! И всё должно быть в минутах! тоесть: Код:
time (in min) = toMinutes( getCurrentTime() - modTimeOf(somedir))Ну дату кактлога я могу прочитать например так: ls -l --time=ctime somedir | awk '{print $6}' и время аналогично. но формат конечно не тот. приходится умножать и считать. и также с текущим времем.. и всё для того чтобы отнять их дург от друга и получить минуты.. Конечная цель цикла же проити по файлам одного каталога и посмотреть если в бэкап-каталоге файлы бывшие измененённые с момента создания предыидущего снапшота (другой каталог) и удалить их в бэкупкаталоге. короче всё уже есть фот только с минутами геморой получается.. есть идеи? :idontnow: :help: :idontnow: |
посмотри: man stat
например: stat -c %X d1 ЗЫ: все спасибы в карму ;) |
Есть такой файл (несколько параграфов начинающихся с ** и разделенных пустой строкой) :
Цитата:
Код:
/^$/!{Код:
:tПользую sed 3.02 из UnixUtils под Винду. |
| Часовой пояс GMT +4, время: 11:55. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.