Титла: Презапис на ред в текстов файл Публикувано от: while в Feb 04, 2012, 15:11 Здравейте, имам един bash script, резултатът от който се записва в текстов файл по този начин:
Код: ./именаскрипта.sh > именафайла.txt Титла: Re: Презапис на ред в текстов файл Публикувано от: b2l в Feb 04, 2012, 15:25 Код: ./scriptOne.sh > textfileOne.txt Титла: Re: Презапис на ред в текстов файл Публикувано от: while в Feb 04, 2012, 15:56 b2l, при една > се презаписва целият файл, а при две се пише на нов ред в края на файла. На мен ми трябва презаписване на точно определен ред в файла.
Титла: Re: Презапис на ред в текстов файл Публикувано от: b2l в Feb 04, 2012, 16:10 b2l, при една > се презаписва целият файл, а при две се пише на нов ред в края на файла. На мен ми трябва презаписване на точно определен ред в файла. Извинявай не съм те разбрал. Титла: Re: Презапис на ред в текстов файл Публикувано от: PhrozenCrew в Feb 04, 2012, 16:32 Използвай sed или awk(gawk):
sed "3cNow Text" text.txt Резултат: line 1 line 2 Now Text line 4 --- gawk "NR==3{$0=\"New text\"}1" text.txt result: line 1 line 2 New text line 4 Малко малоумно съм го написал, ам щото съм под Win, а там има проблеми в промта с единичните кавички. Титла: Re: Презапис на ред в текстов файл Публикувано от: while в Feb 04, 2012, 16:42 Благодаря PhrozenCrew , така стана:
Код: sed "1c$променлива" -i именафайла.txt Още веднъж, благодарско! Титла: Re: Презапис на ред в текстов файл Публикувано от: shoshon в Feb 04, 2012, 16:56 Цитат Сега се наложи, резултатите от няколко различни скрипта, да се записват като отделни редове на същия този текстови файл. Здравей, задачата е тотално грешно дефинирана. Ако говорим за асинхронен запис, може да пробваш с: ( ./script1 & ./script2 ) > file1 Това ще пренасочи изходите на двата скрипта към един файл, и двата ще пишат едновременно. Разбира се тук едновременно е доста разтеглено понятие, защото ОС-а може пре спокойно да раздели така ресурсите си, че първо да свърши пърия скрипт после втория ( или обратно ). Ако говорим за синхронен, т.е. четем един ред изход от единия, после четем един ред изход от другия, ще ти трябва нещо по-сложно. Обаче е интересно как ще е направен синхронен output. Трябва едната нишка да block-ва всеки път когато се чака изход от другата. А може и без блок. Просто да взмимаш една линия от единия изход и една от другия и да ги записваш последователно... Примерно: mkpipe p1 mkpipe p2 ./script1 > p1& ./script2 > p2& exec 4 < ./p1 exec 5 < ./p2 ##Все още нищо не се изпълнява защото нишките блокират от pipe-овете while read -u 4 line1 && read -u 5 line 2 ; do echo line1 >> output.txt echo line2 >> output.txt done Все пак искаме да знаем каква е целта. Набиването на команди като кълвач до никъде не води... П.П. Ся гледам проблема е решен. Щом това е било въпроса... |