|
Фильтрация и редактирование текста
|
|||
---|---|---|---|
#18+
Имеется текстовый файл, в котором все строки, начиная с определенной (например с "***") и заканчивая строкой в которой есть символ ";" надо вырезать из этого текстового файла (и вставить их в новый файл). Как это сделать скриптом на shell ? Ипользовать надо только команды шелла (awk, grep, sed), использование perl и других не допускается. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2004, 09:54 |
|
Фильтрация и редактирование текста
|
|||
---|---|---|---|
#18+
Andron Ипользовать надо только команды шелла (awk, grep, sed), использование perl и других не допускается. А с чего это вдруг awk и компанию вы к командам шела причислили? Это такие же внешние программы как и перл. В связи с чем непонятно чем вызвана такая дискриминация одних внешних программ по отношению к другим Ну и на счет самого вопроса - мне кажется, что такие проблемы лучше решать самому (задача для студентов первокурсников соответствующих вузов), а не выносить в форум. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2004, 10:37 |
|
Фильтрация и редактирование текста
|
|||
---|---|---|---|
#18+
Мне интересны варианты решения этой задачи, поэтому я и задал этот вопрос в форуме. Если сказать по конкретике вопроса нечего, флейм не надо устраивать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2004, 10:56 |
|
Фильтрация и редактирование текста
|
|||
---|---|---|---|
#18+
Ну не надо, так не надо Мне просто за перл обидно - почему он исключается-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2004, 11:09 |
|
Фильтрация и редактирование текста
|
|||
---|---|---|---|
#18+
вот такое шоли ######################### #!/bin/sh infile=$1 outfile=$2 template1="***" template2=";" flag=0 >$outfile cat $1 | while read s do [ "$template1" = "$s" ] && flag=1 [ "$flag" -eq 1 ] && echo "$s" >> $outfile echo $s | grep "$template2" >/dev/null && flag=0 done ###################### а собсна какой критерий что shell а что не shell... тада и sed тоже не shell.. а только внутренними командами shell много не сделаешь! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2004, 11:13 |
|
Фильтрация и редактирование текста
|
|||
---|---|---|---|
#18+
Ув. Somebody2 а насчет внешних программ- perl действительно внешняя и необязательная. В старых системах Unix мы ее не найдем по дефолту, не найдем и в эмулятораз вроде UWin (насчет cygwin не знаю) и может скоро не найдем и во Free BSD по умолчанию (вроде выкинуть его хотели) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2004, 11:19 |
|
Фильтрация и редактирование текста
|
|||
---|---|---|---|
#18+
Ув. их есть у меня собсна критерий что есть шелл, а что не есть шелл у меня довольно простой: Если команда является встроенной командой шелл, то это шелл , в противном случае это внешняя программа С этой точки зрения awk и perl абсолютно равноправны. Не знаю как в темном прошлом и в светлом будущем, но в настоящем обе ставятся по дефалту А вот слабо действительно только внутренними командами shell обойтись? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2004, 11:28 |
|
Фильтрация и редактирование текста
|
|||
---|---|---|---|
#18+
Ув. Somebody2, обычно под shell programming понимают все же и использование текстовых утилит unux. Ваша задача конечно забавная ;)) Но! ее тогда уж решать не навороченными bash, zsh и прочими, а обычным sh. !!!!! (правда у многих ли он есть? :)) ***************** для автора - вариант awk ############################3 #!/bin/awk -f BEGIN{ outputfile="my file" template1="***" template2=";" flag=0 print "" >> outputfile } { if($0==template1){flag=1} if(flag==1){print $0 >> outputfile} if($0 ~ template2){flag=0} } ############### ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2004, 11:34 |
|
Фильтрация и редактирование текста
|
|||
---|---|---|---|
#18+
2 Их есть у меня Ну фиг с ним уговорили, да будет так: perl - внешняя, awk - внутренняя . А как насчет решения данной задачи только средствами хотя бы навороченного bash-а? Я вот себе загрузочную дискету для Линукса сваял - bash туда воткнуть ухитрился, а вот для grep с awk и sed места не нашлось Помогите плиз, решить эту задачку, а то мне самому ее решать придется ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2004, 11:50 |
|
Фильтрация и редактирование текста
|
|||
---|---|---|---|
#18+
Ув. Somebody2, ну какая разница внешняя-внутренняя- sed и прочие - принадлежность shell, ведь никого Вы не призываете на С программировать без #include ? )) Хотя тоже можно наверное. Функцию main(){} там написать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2004, 11:56 |
|
Фильтрация и редактирование текста
|
|||
---|---|---|---|
#18+
2 их есть у меня Без легкого флейма все таки обойтись не удалось автор не призываете на С программировать без #include Прежде всего я вообще никого ни к чему не призывал, а только спрашивал Тем не менее , сравнение, как мне кажется, несколько неправильное. Директивой include вы просто вставляете файл, являющийся по сути своей тем же самым фрагментом программы на языке того же самого C, (кстати аналогичную вставку файла можно сделать и в bash), тут скорее было бы более уместно сравнить с подключением библиотек - такая то библиотека стандартная, а такая то нет Ну да ладно, я уже понял, задачу за меня вы решать не собираетесь Придется самому - прикола ради ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2004, 12:18 |
|
Фильтрация и редактирование текста
|
|||
---|---|---|---|
#18+
Ув. Somebody2 спецьяльна для Вас ##################### #!/bin/sh infile=$1 outfile=$2 template1="***" template2=";" flag=0 echo "" > "$outfile" cat $1 | while read s do [ "$template1" = "$s" ] && flag=1 [ "$flag" -eq 1 ] && echo "$s" >> $outfile case "$s" in *$template2*) flag=0 esac done ##################### а теперь подумаем - если команды echo и test - внешние ????? )))) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2004, 12:18 |
|
Фильтрация и редактирование текста
|
|||
---|---|---|---|
#18+
Oops Немного опоздал - спасиб, будем смотреть ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2004, 12:20 |
|
Фильтрация и редактирование текста
|
|||
---|---|---|---|
#18+
>а теперь подумаем - если команды echo и test - внешние ????? )))) У bash они есть и в числе встроенных. Не знаю какую bash предпочитает по умолчнаию (при наличии внешних echo и test) Да и какая разница? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2004, 12:23 |
|
Фильтрация и редактирование текста
|
|||
---|---|---|---|
#18+
А вот можно ли это сделать на чистом sed ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2004, 12:41 |
|
|
start [/forum/topic.php?fid=25&fpage=267&tid=1491558]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
69ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 8ms |
total: | 180ms |
0 / 0 |