необходимо раздробить этот файл на то количество файлов которое я задам (ну пусть это будет задаваться переменной к примеру $count), причём записать уже в новые файлы с некоторыми изменениями типа:
text
script -a server1 -b param1 -c param2
(ну с этой частью я справлюсь сам наверное).
Заранее признателен.
необходимо раздробить этот файл на то количество файлов которое я задам (ну пусть это будет задаваться переменной к примеру $count), причём записать уже в новые файлы с некоторыми изменениями типа:
файлы у нас дробят утилитой split, а редактируют утилитой sed. В чём у вас сложность?
drBatty, эм.... это учебник по sed, я имел введу небольшой пример скрипта где используется split (к примеру что-то на подобие того, что я прошу) т.к. там так-же наверняка и циклы используются smile
Я как-то на него наткнулся не здесь, а в дебрях интернета
и вам спасибо. но лучше у меня. там постоянно дополняется. и исправляется - я пишу в свободное время, и там очень много неточностей и вообще дезинформации. :( у меня более корректный вариант. если что - пишите.
.snif написал:
я имел введу небольшой пример скрипта где используется split (к примеру что-то на подобие того, что я прошу) т.к. там так-же наверняка и циклы используются
если-бы я знал, что вам надо...
ну здесь есть split...
ну я же в первом посте написал sad раздробить файл мне надо на определённое количество файлов
дано: разбить файл на N частей.
Решение:
1)получаем размер. SIZE=`stat -c%s файл`
2)делим размер на число частей ((M = SIZE / N))
3)режем split -b$M файл.
что тут писать-то?
#!/usr/bin/env python3.1
param = {}
i = int(input ("count:"))
ii=1
for filename in sys.argv[1:]:
for line in open(filename):
if ii <= i:
lin = line.split(":")
newline = "script -a {0} -b {1} -c {2}".format(lin[0],lin[1],lin[2])
fname = lin[0]+".txt"
print (newline)
nf = open(fname,"w")
nf.write(newline)
nf.close()
ii+=1
else:
break
print("complete",ii,"lines")
Код конечно кривоват,и разбивает он строки где слова разделены ":" ,потом формирует строку и сохраняет её в файл с именем server1.txt(имя файл для каждой строки различно).А и перед запуском цикла спрашивает скок строк надо обработать. имя обрабатываемоего файла передается как параметр.
а как сделать какие-либо математические действия? если можно приведите пример
блин!!! я же вам русским по белому пишу!
text
((M = SIZE / N))
если переменные $SIZE и $N имеют числовые значения (причём $N не равно нулю), то переменной $M присваивается частное.
.snif написал:
вот в дроблённые файлы запишется только то, что в файле list, подскажите как записать туда немного изменённые строки из файла list?
2 способа:
1) записать как выше, а потом подредактировать части.
2) использовать sed. Например загрузить в её буфер много строк командой N, а потом подредактировать их командой s, ну и записать их в файл командой w. Это достаточно непросто, т.к. имя файла для w записывается в sed скрипте. Придётся либо делать кучу временных скриптов, либо писать какой-нибудь командой bash, которую можно выполнить внутри команды s, внутри sed скрипта.
Ну и третий - загрузить файл в переменные bash, и во время загрузки выводить их в файлы. Это не слишком сложно, но работает очень медленно.
И наконец - использовать для этого другие языки (часто - самый оптимальный вариант).