powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / скрипт на shell
21 сообщений из 21, страница 1 из 1
скрипт на shell
    #33849696
Андрей_C2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Банально кажется, а что-то не получается :(
Есть файлы типа
заголовок запись1
запись2
запись3
....
Надо чтоб получилось в итоге заголовок в одном файле, все остальное в другом. 1-ая запись сдледует прямо за заголовком, при этом заголовок занимает 60 символов. Файлы специфические и большого размера ниче не получается сделать, пытался и sed и awk применять :(
...
Рейтинг: 0 / 0
скрипт на shell
    #33849705
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем тут sed и awk, когда достаточно head и tail?)
...
Рейтинг: 0 / 0
скрипт на shell
    #33849707
Андрей_C2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, помогите, подскажите вариант.
...
Рейтинг: 0 / 0
скрипт на shell
    #33849721
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну заголовок вытащить:
Код: plaintext
head -c  60  filename
, если он всегда есть, и всегда 60 байт, конечно.
Вытащить всё, кроме первых 60 байт...
Тупо в лоб, узнать размер файла, отнять 60 и вывести
Код: plaintext
tail -c результат
...
Рейтинг: 0 / 0
скрипт на shell
    #33849726
Андрей_C2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DocAlНу заголовок вытащить:
Код: plaintext
head -c  60  filename
, если он всегда есть, и всегда 60 байт, конечно.
Вытащить всё, кроме первых 60 байт...
Тупо в лоб, узнать размер файла, отнять 60 и вывести
Код: plaintext
tail -c результат

что-то ругается на опцию -c :(
testsrv:/home/dbldr/temp/parsing/input> head -c 60 filename
head: illegal option -- c
usage: head [-n #] [-#] [filename...]
...
Рейтинг: 0 / 0
скрипт на shell
    #33849732
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что за система-то? Ну мб head --bytes=60 тогда... Или man head.)
...
Рейтинг: 0 / 0
скрипт на shell
    #33849736
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну или
dd if=infile of=head bs=60 count=1
dd if=infile of=rest bs=60 skip=1
...
Рейтинг: 0 / 0
скрипт на shell
    #33849741
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А кстати да, dd тут будет удобнее, пожалуй.
...
Рейтинг: 0 / 0
скрипт на shell
    #33849752
Андрей_C2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DocAlА что за система-то? Ну мб head --bytes=60 тогда... Или man head.)
Система SunOS 5.10 man говорит только об опции -n.
...
Рейтинг: 0 / 0
скрипт на shell
    #33849762
Андрей_C2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вообще эти все файлы странные какие-то или я что не понимаю, но вот взгляните:
testsrv:/home/dbldr/temp/parsing/input> head -n 1 filename
,slu10a0001673531|1|1| 4-12-06|13:37:59.0| 4-12-06|13:38: 9.0| 4-12-06|13:38:32.0|38214|79088683963|0|79088672953|||185|pps|16|53|79088672953|38214|:Asia/Yekaterinbur||23.000000|2|0.000000||0.000000|0|7|79088672953||||||250175000451443|96||4319|23.000|0.0000|0.0000|0.0000||||||200000000000001|100100010030003|33|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0.000000|+|159.497500|0.000000|2|0.000000|0.000000|1|0.000000|0.000000|1|0.000000|0.000000|4|0.000000|0.000000|3|0.000000|0.000000||0.000000|0.000000||0.000000|0.000000||0.000000|0.000000||0.000000|||1|0|32||0||0||73462348988|250175000451443|10||0|0|0|0|0||||||||||||||||2||0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|1|0.000000|0.000000|0.000000|||

то есть заголовок выглядит как ,slu10a , а когда делаю more , то :
testsrv:/home/dbldr/temp/parsing/input> more IPbill.slu10a.6494.1144827512.bip72.0000437426
,slu10a000167353000016848931144827512114482818200000113640001673530|1|1| 4-12-06|13:38:22.0||| 4-12-06|13:38:32.0|37619|79221290156|0|79024401776|||122|pps|2
0|53|79024401776|37619|:Asia/Yekaterinbur||0.000000|2|0.000000||0.000000|0|8|79024401776||||||250170530012357|95||4319|0.0000|0.0000|0.0000|0.0000||||||20000
0000000008|100100010040007|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.000000
0|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0.000000|+|11.986800|0.000000||0.000000|0.00000
0||0.000000|0.000000||0.000000|0.000000||0.000000|0.000000||0.000000|0.000000||0.000000|0.000000||0.000000|0.000000||0.000000|0.000000||0.000000|||1|0|169||0
||0||73469010000|250170530012357|10||||||||||||||||||||||2||0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|1|0.000
000|0.000000|0.000000|||
тут заголовок выглядит как ,slu10a00016735300001684893114482751211448281820000011364 с чем связано это?
Возможно со спецификой команды head, но как тогда корректно вырезать чтоб ничего не потерять?
...
Рейтинг: 0 / 0
скрипт на shell
    #33849789
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так вам же предложили вариант с использованием dd?
...
Рейтинг: 0 / 0
скрипт на shell
    #33849808
Андрей_C2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, я это написал раньше, чем прочитал тот пост с dd, получилось, все работает, спасибо, будут вопросы обращусь :)
...
Рейтинг: 0 / 0
скрипт на shell
    #33852761
Андрей_C2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все-таки вопрос актуален, порезал я файлы как надо, загружаю их в таблицы а там заголовок не весь, как в примере ниже, вместо нужного slu10a00016735300001684893114482751211448281820000011364 в таблице вижу slu10a, может что-то с кодировкой связано?
И вообще эти все файлы странные какие-то или я что не понимаю, но вот взгляните:
testsrv:/home/dbldr/temp/parsing/input> head -n 1 filename
,slu10a0001673531|1|1| 4-12-06|13:37:59.0| 4-12-06|13:38: 9.0| 4-12-06|13:38:32.0|38214|79088683963|0|79088672953|||185|pps|16|53|79088672953|38214|:Asia/Yekaterinbur||23.000000|2|0.000000||0.000000|0|7|79088672953||||||250175000451443|96||4319|23.000|0.0000|0.0000|0.0000||||||200000000000001|100100010030003|33|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0.000000|+|159.497500|0.000000|2|0.000000|0.000000|1|0.000000|0.000000|1|0.000000|0.000000|4|0.000000|0.000000|3|0.000000|0.000000||0.000000|0.000000||0.000000|0.000000||0.000000|0.000000||0.000000|||1|0|32||0||0||73462348988|250175000451443|10||0|0|0|0|0||||||||||||||||2||0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|1|0.000000|0.000000|0.000000|||

то есть заголовок выглядит как ,slu10a , а когда делаю more , то :
testsrv:/home/dbldr/temp/parsing/input> more IPbill.slu10a.6494.1144827512.bip72.0000437426
,slu10a000167353000016848931144827512114482818200000113640001673530|1|1| 4-12-06|13:38:22.0||| 4-12-06|13:38:32.0|37619|79221290156|0|79024401776|||122|pps|2
0|53|79024401776|37619|:Asia/Yekaterinbur||0.000000|2|0.000000||0.000000|0|8|79024401776||||||250170530012357|95||4319|0.0000|0.0000|0.0000|0.0000||||||20000
0000000008|100100010040007|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.000000
0|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0|0.0000000|0.000000|+|11.986800|0.000000||0.000000|0.00000
0||0.000000|0.000000||0.000000|0.000000||0.000000|0.000000||0.000000|0.000000||0.000000|0.000000||0.000000|0.000000||0.000000|0.000000||0.000000|||1|0|169||0
||0||73469010000|250170530012357|10||||||||||||||||||||||2||0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|1|0.000
000|0.000000|0.000000|||
тут заголовок выглядит как ,slu10a00016735300001684893114482751211448281820000011364 с чем связано это?
Возможно со спецификой команды head, но как тогда корректно вырезать чтоб ничего не потерять?
...
Рейтинг: 0 / 0
скрипт на shell
    #33852855
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так вы же уже, вроде, dd используете, причём тут head?
...
Рейтинг: 0 / 0
скрипт на shell
    #33853129
Андрей_C2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, совершенно верно, порезал я с помощью dd, просто в заголовке файла есть нулевые байты после которых есть нужная информация, которую я не могу загрузить в оракл скллоадером, он скорее всего считает первый нулевой байт, как окончание строки и все остальное отбрасывает, но это скорее всего вопрос уже в раздел Оракл, но от совета не откажусь.
...
Рейтинг: 0 / 0
скрипт на shell
    #33856819
Андрей_C2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вопрос возник, как заменить с помощью shell нулевые байты чем-либо другим?
...
Рейтинг: 0 / 0
скрипт на shell
    #33857350
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
man tr, например
...
Рейтинг: 0 / 0
скрипт на shell
    #33873582
Андрей_C2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Действительно, помогло man tr :) Но дело в том, что заголовки файлов несколько разные по размеру, то есть нумеруются они в зависимости от того, откуда пришли, например, slu21a и slu1a, то есть размер файлов может различаться на один байт, поэтому когда я хочу порезать с помощью dd дальше файл не получается возможным задать bs какого-любо значения, напрашиватеся вариант, 2-х алгоритмов, в зависисмости от размера файла, но как это проверить, чем ? Можно наверено с помощью ls, но как - то не красиво по-моему, подскажите, как проще сделать ?
...
Рейтинг: 0 / 0
скрипт на shell
    #33873599
Андрей_C2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
,slu10a000167353000016848931144827512114482818200000113640001673530
,slu1a000167353000016848931144827512114482818200000113640001673530
надо порезать на
,slu10a 000167353 0000168489 3114482751 21144828182 0000011364 0001673530
и
,slu1a 000167353 0000168489 3114482751 21144828182 0000011364 0001673530
...
Рейтинг: 0 / 0
скрипт на shell
    #33875067
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну раз такое дело, резать надо не по байтам, а как-то иначе.
Есть же какой-то признак окончания заголовка?
...
Рейтинг: 0 / 0
скрипт на shell
    #33875371
Андрей_C2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никакого признака нет :( Заголовок сливается с последующей информацией в файле
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / скрипт на shell
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]