Есть некоторый файл, который имеет следующую условную структуру:
<это не нужно удалять>
<это нужно удалять>
<это не нужно удалять>
Можно ли написать скрипт,который бы удалял строки с определенной части файла и до определенной части файла?
Есть некоторый файл, который имеет следующую условную структуру:
<это не нужно удалять>
<это нужно удалять>
<это не нужно удалять>
Можно ли написать скрипт,который бы удалял строки с определенной части файла и до определенной части файла?
[console]
lupo@gentoo-laptop /tmp % cat test.txt
Don't remove
Test0
Remove it
Test1 test2
test3
Test4
Remove it
Test5
test6
Don't remove
lupo@gentoo-laptop /tmp % sed '/Remove\ it/,/Remove\ it/d' test.txt
Don't remove
Test0
Test5
test6
Don't remove
[/console]
Lupo Alberto, спасибо за ответ. А как-нибудь с помощью команды sed это можно сделать?
o_O
А как-нибудь с помощью команды sed это можно сделать?
sed '/Remove\ it/,/Remove\ it/d' test.txt
o_O
[quote="ivan--b"]А как-нибудь с помощью команды sed это можно сделать?
[/quote]sed '/Remove\ it/,/Remove\ it/d' test.txt
P.S. Вот небольшие заметки от Даниеля Роббинса — основателя Gentoo и Funtoo. Мне очень нравятся ;)
http://www.funtoo.org/wiki/Bash_by_Example,_Part_1
http://www.funtoo.org/wiki/Bash_by_Example,_Part_2
http://www.funtoo.org/wiki/Bash_by_Example,_Part_3
http://www.funtoo.org/wiki/Awk_by_Example,_Part_1
http://www.funtoo.org/wiki/Awk_by_Example,_Part_2
http://www.funtoo.org/wiki/Awk_by_Example,_Part_3
http://www.funtoo.org/wiki/Sed_by_Example,_Part_1
http://www.funtoo.org/wiki/Sed_by_Example,_Part_2
http://www.funtoo.org/wiki/Sed_by_Example,_Part_3
Я много времени потеряю пока разбирусь, где у меня ошибка. Может кто-нибудь поможет мне?
Вообщем задача таже самая, но файл не один их несколько и они находять в директории copy. Я написал скрипт:
sed -n -e '/от куда нужно выводить/,/до куда нужно выводить/p' copy/имя файла.txt >>copy/c3.txt
sed -n -e '/от куда нужно выводить/,/до куда нужно выводить/p' copy/имя файла.txt >> copy/c3.txt
echo "нужный текст" >> copy/c3.txt
echo "нужный текст" >> copy/c3.txt
Сам скрипт находится в родительской директории copy.Для одного файла скрипт работает нормально. Можно конечно прочитать все файлы каждый раз изменяя имя файла в скрипте, но лень :[ . Можно ли как-нибудь сделать так что бы скрипт прочитал все файлы в директории обработал их и сохранял весь обработынай текст каждый раз в другой файл? К примеру файл, который нужно обработать, имеет имя 1.txt, а файл, в который будет направлен текст будет иметь имя с1.txt.Следующий файл 2.txt, а файл назначения с2.txt.И так до конца пока не будут обработаны все файлы.
Я сам пробовал дописать свой скрипт, но у меня где-то ошибки.Вот что я пробовал написать:
sed -n -e '/от куда нужно выводить/,/до куда нужно выводить/p' copy/*.txt >>copy/с*.txt
sed -n -e '/от куда нужно выводить/,/до куда нужно выводить/p' copy/*.txt >> copy/с*.txt
echo "нужный текст" >> copy/с*.txt
echo "нужный текст" >> copy/с*.txt
Файлы читаются все, но почему-то все данные сохраняются в один файл с*.txt
Пробовал и так:
i=*
sed -n -e '/от куда нужно выводить/,/до куда нужно выводить/p' copy/имя файла.txt >>copy/c$i.txt
sed -n -e '/от куда нужно выводить/,/до куда нужно выводить/p' copy/имя файла.txt >> copy/c$i.txt
echo "нужный текст" >> copy/c$i.txt
echo "нужный текст" >> copy/c$i.txt
На этот раз все данные сохраняюся в файл $i.txt.В чем у меня может быть ошибка? *SCRATCH*
А по окончании работы скрипта нужно чтобы файлы с которых считывался текст были удалены, а новые файлы были переименованы в название файлов,с которых считывался текст.Тоесть в их имени должно быть убрано "c".Например файлы имеют имена с1.txt c2.txt, а нужно чтобы они назывались с1.txt, c2.txt. Над этим я еще не думал, но думаю здесь у меня тоже будут ошибки. Может кто-нибудь посоветует как это сделать? *SCRATCH*
ivan--b, посмотри в ABS на то, как используются циклы.
будет что-то вроде:
find -maxdepth 1 -type f | while read i; do
command "$i" >"new_$i"
done