The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"bash-скрипт"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"bash-скрипт"  +/
Сообщение от Александра email on 21-Фев-11, 10:36 
Всем привет!

Мне нужна ваша помощь!
Пишу небольшой скриптик и с основной задачей справилась, но столкнулась с проблемой, что когда обрабатываю бинарник командой strings, она "сжирает" пустые строки.
Может кто знает, как этого можно избежать?

И еще вопросик: подскажите как можно в бинарном файле отыскать пустую строку?

Заранее благодарю)

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "bash-скрипт"  +/
Сообщение от allez (ok) on 21-Фев-11, 13:29 
> Всем привет!
> Мне нужна ваша помощь!
> Пишу небольшой скриптик и с основной задачей справилась, но столкнулась с проблемой,
> что когда обрабатываю бинарник командой strings, она "сжирает" пустые строки.
> Может кто знает, как этого можно избежать?
> И еще вопросик: подскажите как можно в бинарном файле отыскать пустую строку?
> Заранее благодарю)

Вот выдержка из man strings (http://www.opennet.me/man.shtml?topic=strings&category=1&rus...)


       -min-len
       -n min-len
       --bytes=min-len
           Print  sequences  of  characters that
           are at least min-len characters long,
           instead of the default 4.


Попробуйте указать в этой опции значение "1".

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "bash-скрипт"  +/
Сообщение от pavlinux (ok) on 22-Фев-11, 15:01 
> Пишу небольшой скриптик и с основной задачей справилась, но столкнулась с проблемой,
> что когда обрабатываю бинарник командой strings, она "сжирает" пустые строки.
> Может кто знает, как этого можно избежать?
> И еще вопросик: подскажите как можно в бинарном файле отыскать пустую строку?

В бинарном файле нет строк! :)
А то, что там встречается CR/LF это случайность, хотя с большой вероятностью.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "bash-скрипт"  +/
Сообщение от Andrey Mitrofanov on 22-Фев-11, 15:05 
А переводы строки -- есть! %) Па-ра-докс...
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "bash-скрипт"  +/
Сообщение от Pahanivo (ok) on 22-Фев-11, 23:15 
> А переводы строки -- есть! %) Па-ра-докс...

нишутя себе! однако!

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "bash-скрипт"  +1 +/
Сообщение от anonymous (??) on 22-Фев-11, 23:25 
> Всем привет!
> Мне нужна ваша помощь!
> Пишу небольшой скриптик и с основной задачей справилась, но столкнулась с проблемой,
> что когда обрабатываю бинарник командой strings, она "сжирает" пустые строки.
> Может кто знает, как этого можно избежать?
> И еще вопросик: подскажите как можно в бинарном файле отыскать пустую строку?

выглядит как проблема X-Y http://mywiki.wooledge.org/XyProblem

что за основная задача-то?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "bash-скрипт"  +/
Сообщение от deplot email(ok) on 23-Фев-11, 19:30 
>> Всем привет!
>> Мне нужна ваша помощь!
>> Пишу небольшой скриптик и с основной задачей справилась, но столкнулась с проблемой,
>> что когда обрабатываю бинарник командой strings, она "сжирает" пустые строки.
>> Может кто знает, как этого можно избежать?
>> И еще вопросик: подскажите как можно в бинарном файле отыскать пустую строку?
> выглядит как проблема X-Y http://mywiki.wooledge.org/XyProblem
> что за основная задача-то?

В общем с тем, что я спрашивала, я уже разобралась.


У меня появился другой вопрос.
У меня есть много файликов в формате *txt, которые мне необходимо обработать(убрать пустые строки, добавить теги и.т.д) по одинаковому шаблону
Вопрос в следующем: все файлы хранятся в определенной директории, я загоняю их в массив, обрабатываю циклом каждый файл...

вот кусочек кода:

declare -a scr=$(ls)
for i in ${scr[*]};
do sed '/^$/d' $i |  sed 's/ZY/\n/g' $i | grep -v '^!' $i ;
done

и дальше тупик, так как весь результат выводится на экран, а мне нужно грубо говоря перезаписать файлы

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "bash-скрипт"  +/
Сообщение от Pahanivo (ok) on 23-Фев-11, 21:37 
>[оверквотинг удален]
> В общем с тем, что я спрашивала, я уже разобралась.
> У меня появился другой вопрос.
> У меня есть много файликов в формате *txt, которые мне необходимо обработать(убрать
> пустые строки, добавить теги и.т.д) по одинаковому шаблону
> Вопрос в следующем: все файлы хранятся в определенной директории, я загоняю их
> в массив, обрабатываю циклом каждый файл...
> вот кусочек кода:
> declare -a scr=$(ls)
> for i in ${scr[*]};
> do sed '/^$/d' $i |  sed 's/ZY/\n/g' $i | grep -v '^!' $i ;

эээ зачем во второй и далее комманде конвеера $i ???
> done

DIRLIST=`ls /some/dir`
TMPFILE=/var/mazafile
for i in $DIRLIST
do
sed 'blablabla' $i |  grep 'blablabla' | somebin 'blablabla' > $TMPFILE
mv $TMPFILE $i
done

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "bash-скрипт"  +/
Сообщение от allez (ok) on 23-Фев-11, 21:38 
>[оверквотинг удален]
> Вопрос в следующем: все файлы хранятся в определенной директории, я загоняю их
> в массив, обрабатываю циклом каждый файл...
> вот кусочек кода:
> declare -a scr=$(ls)
> for i in ${scr[*]};
> do sed '/^$/d' $i |  sed 's/ZY/\n/g' $i | grep -v
> '^!' $i ;
> done
> и дальше тупик, так как весь результат выводится на экран, а мне
> нужно грубо говоря перезаписать файлы

Попробуйте так:

do sed -i '/^$/d; s/ZY/\n/g; /^!/d' $i

P. S. Я намеренно не "причесывал" код и написал его, что называется, "быстро и грязно".
Облагородить его оставляю вам в качестве домашнего задания. :-)
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

9. "bash-скрипт"  +/
Сообщение от deplot email(ok) on 25-Фев-11, 10:58 
>[оверквотинг удален]
> Вопрос в следующем: все файлы хранятся в определенной директории, я загоняю их
> в массив, обрабатываю циклом каждый файл...
> вот кусочек кода:
> declare -a scr=$(ls)
> for i in ${scr[*]};
> do sed '/^$/d' $i |  sed 's/ZY/\n/g' $i | grep -v
> '^!' $i ;
> done
> и дальше тупик, так как весь результат выводится на экран, а мне
> нужно грубо говоря перезаписать файлы

Спасибо всем огромное)
Все работает)

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

10. "bash-скрипт"  +/
Сообщение от ill ates on 26-Фев-11, 11:36 
>[оверквотинг удален]
>> вот кусочек кода:
>> declare -a scr=$(ls)
>> for i in ${scr[*]};
>> do sed '/^$/d' $i |  sed 's/ZY/\n/g' $i | grep -v
>> '^!' $i ;
>> done
>> и дальше тупик, так как весь результат выводится на экран, а мне
>> нужно грубо говоря перезаписать файлы
> Спасибо всем огромное)
> Все работает)

ну и огород вы тут нагородили дорогуша
Я вам просто немножечко намекну
sed -i '/^$/d; s/ZY/\n/g; /^!/d' /somefolder/*/subfolder?/subfolder[1,2,5]/*.txt

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "bash-скрипт"  +/
Сообщение от allez (ok) on 26-Фев-11, 20:02 
>[оверквотинг удален]
>>> do sed '/^$/d' $i |  sed 's/ZY/\n/g' $i | grep -v
>>> '^!' $i ;
>>> done
>>> и дальше тупик, так как весь результат выводится на экран, а мне
>>> нужно грубо говоря перезаписать файлы
>> Спасибо всем огромное)
>> Все работает)
> ну и огород вы тут нагородили дорогуша
> Я вам просто немножечко намекну
> sed -i '/^$/d; s/ZY/\n/g; /^!/d' /somefolder/*/subfolder?/subfolder[1,2,5]/*.txt

А мне вот хотелось бы узнать, откуда в вашем намеке взялся этот "огород":
>/somefolder/*/subfolder?/subfolder[1,2,5]/*.txt

И заодно как бы вам намекнуть потоньше, что ваш намек немножечко припозднился? :-)

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "bash-скрипт"  +/
Сообщение от Pahanivo (ok) on 26-Фев-11, 22:59 
> И заодно как бы вам намекнуть потоньше, что ваш намек немножечко припозднился?
> :-)

дааааа он походу решил побить рекорд по кол-ву идиотизма на квадратный пиксел ...

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "bash-скрипт"  +/
Сообщение от pavlinux (ok) on 26-Фев-11, 23:39 
>> И заодно как бы вам намекнуть потоньше, что ваш намек немножечко припозднился?
>> :-)
> дааааа он походу решил побить рекорд по кол-ву идиотизма на квадратный пиксел
> ...

Должон появиться Митрофанов и уложиться в sed и 6-8 символов. :)

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "bash-скрипт"  +/
Сообщение от universite email(ok) on 04-Мрт-11, 00:47 

> Должон появиться Митрофанов и уложиться в sed и 6-8 символов. :)

Можно я попробую? :)


sed 's/'"$1"'/'"$2"'/g' $i | tee $i


Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

15. "bash-скрипт"  +/
Сообщение от Andrey Mitrofanov on 04-Мрт-11, 10:29 
>> Должон появиться Митрофанов и уложиться в sed и 6-8 символов. :)

Нет, то, что там выше _так даже я не ужму. :)

А вот это, благодаря новейшим изысканиям Учёных http://apenwarr.ca/log/?m=201102#28 , можно и сжать.

> Можно я попробую? :)
> sed 's/'"$1"'/'"$2"'/g' $i | tee $i

$ sed -i s/$1/$2/g $i

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

16. "bash-скрипт"  +/
Сообщение от universite email(ok) on 04-Мрт-11, 16:21 
>>> Должон появиться Митрофанов и уложиться в sed и 6-8 символов. :)
> Нет, то, что там выше _так даже я не ужму. :)
> А вот это, благодаря новейшим изысканиям Учёных http://apenwarr.ca/log/?m=201102#28
> , можно и сжать.
>> Можно я попробую? :)
>> sed 's/'"$1"'/'"$2"'/g' $i | tee $i
> $ sed -i s/$1/$2/g $i

без tee весь результат вылезет на экран

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

17. "bash-скрипт"  +/
Сообщение от allez (ok) on 05-Мрт-11, 09:22 
> без tee весь результат вылезет на экран

А вот что говорит man sed о ключе -i:

       -i[SUFFIX], --in-place[=SUFFIX]

              edit files in place (makes backup if extension supplied)


В общем, с этим ключом sed ничего на экран не вываливает, а правит сам файл. ;-)

P. S. Кстати, с tee результат помимо файла вылезет также и на экран. :-)

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

18. "bash-скрипт"  +/
Сообщение от Pahanivo (ok) on 05-Мрт-11, 11:47 
вам линейку дать чтобы удобней мерятся? :)
Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

19. "bash-скрипт"  +/
Сообщение от allez (ok) on 05-Мрт-11, 12:39 
> вам линейку дать чтобы удобней мерятся? :)

Дядьку, вы обо что толкуете? :)
Товарищ был мало-мало заблуждаться, я был мало-мало показать ему, где он заблудился,
вот и все, однако. :)

Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

20. "bash-скрипт"  +/
Сообщение от Pahanivo (ok) on 05-Мрт-11, 13:06 
топегстартер еще двадцать первого дня прошлого месяса положил на это ... ))
Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

24. "bash-скрипт"  +/
Сообщение от allez (ok) on 05-Мрт-11, 16:34 
> топегстартер еще двадцать первого дня прошлого месяса положил на это ... ))

Да кому он теперь нужен? :)
И без него (или нее) здесь достаточно интересно. :)

Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

21. "bash-скрипт"  +/
Сообщение от universite email(ok) on 05-Мрт-11, 14:40 
>> без tee весь результат вылезет на экран
> А вот что говорит man sed о ключе -i:
>
       -i[SUFFIX], --in-place[=SUFFIX] 
>            
>   edit files in place (makes backup if extension supplied)
>

> В общем, с этим ключом sed ничего на экран не вываливает, а
> правит сам файл. ;-)


     -i extension
             Edit files in-place similarly to -I, but treat each file indepen-
             dently from other files.  In particular, line numbers in each
             file start at 1, the ``$'' address matches the last line of the
             current file, and address ranges are limited to the current file.
             (See Sed Addresses.)  The net result is as though each file were
             edited by a separate sed instance.

судя по всему, у нас разные sed и tee :)
Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

22. "bash-скрипт"  +/
Сообщение от Pahanivo (ok) on 05-Мрт-11, 14:44 
> судя по всему, у нас разные sed и tee :)

наконецта до кого то дошло ))

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

23. "bash-скрипт"  +/
Сообщение от Andrey Mitrofanov on 05-Мрт-11, 16:05 
> судя по всему, у нас разные sed и tee :)

Не ровён час FreeBSD?
Если у тебя ещё и _bash "разный", то и вообще -- "юникс". 8-]

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

25. "bash-скрипт"  +/
Сообщение от Вова on 06-Мрт-11, 13:01 
Уверен, что комментариев было бы на порядок меньше, если бы топик стартера звали бы не Александрой, а, например, Василием.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру