powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Фильтрация и редактирование текста
16 сообщений из 16, страница 1 из 1
Фильтрация и редактирование текста
    #32497924
Фотография Andron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется текстовый файл, в котором все строки, начиная с определенной (например с "***") и заканчивая строкой в которой есть символ ";" надо вырезать из этого текстового файла (и вставить их в новый файл). Как это сделать скриптом на shell ? Ипользовать надо только команды шелла (awk, grep, sed), использование perl и других не допускается.
...
Рейтинг: 0 / 0
Фильтрация и редактирование текста
    #32498026
Somebody2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andron
Ипользовать надо только команды шелла (awk, grep, sed), использование perl и других не допускается.

А с чего это вдруг awk и компанию вы к командам шела причислили? Это такие же внешние
программы как и перл. В связи с чем непонятно чем вызвана такая дискриминация одних внешних
программ по отношению к другим

Ну и на счет самого вопроса - мне кажется, что такие проблемы лучше решать самому (задача для студентов первокурсников соответствующих вузов), а не выносить в форум.
...
Рейтинг: 0 / 0
Фильтрация и редактирование текста
    #32498088
Фотография Andron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне интересны варианты решения этой задачи, поэтому я и задал этот вопрос в форуме. Если сказать по конкретике вопроса нечего, флейм не надо устраивать.
...
Рейтинг: 0 / 0
Фильтрация и редактирование текста
    #32498131
Somebody2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну не надо, так не надо
Мне просто за перл обидно - почему он исключается-то?
...
Рейтинг: 0 / 0
Фильтрация и редактирование текста
    #32498150
Их есть у меня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот такое шоли

#########################

#!/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 много не сделаешь!
...
Рейтинг: 0 / 0
Фильтрация и редактирование текста
    #32498170
Их есть у меня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ув. Somebody2 а насчет внешних программ- perl действительно внешняя
и необязательная. В старых системах Unix мы ее не найдем по дефолту,
не найдем и в эмулятораз вроде UWin (насчет cygwin не знаю) и может скоро не
найдем и во Free BSD по умолчанию (вроде выкинуть его хотели)
...
Рейтинг: 0 / 0
Фильтрация и редактирование текста
    #32498202
Somebody2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ув. их есть у меня собсна критерий что есть шелл, а что не есть шелл у меня довольно
простой: Если команда является встроенной командой шелл, то это шелл , в противном случае
это внешняя программа С этой точки зрения awk и perl абсолютно равноправны. Не знаю как в
темном прошлом и в светлом будущем, но в настоящем обе ставятся по дефалту

А вот слабо действительно только внутренними командами shell обойтись?
...
Рейтинг: 0 / 0
Фильтрация и редактирование текста
    #32498218
Их есть у меня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ув. 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}
}

###############
...
Рейтинг: 0 / 0
Фильтрация и редактирование текста
    #32498281
Somebody2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Их есть у меня
Ну фиг с ним уговорили, да будет так: perl - внешняя, awk - внутренняя .
А как насчет решения данной задачи только средствами хотя бы навороченного bash-а?

Я вот себе загрузочную дискету для Линукса сваял - bash туда воткнуть ухитрился, а вот для
grep с awk и sed места не нашлось Помогите плиз, решить эту задачку, а то мне самому ее
решать придется
...
Рейтинг: 0 / 0
Фильтрация и редактирование текста
    #32498303
Их есть у меня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ув. Somebody2, ну какая разница внешняя-внутренняя- sed и прочие
- принадлежность shell, ведь никого Вы не призываете на С
программировать без #include ? ))

Хотя тоже можно наверное. Функцию main(){} там написать :)
...
Рейтинг: 0 / 0
Фильтрация и редактирование текста
    #32498367
Somebody2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 их есть у меня
Без легкого флейма все таки обойтись не удалось
автор
не призываете на С программировать без #include

Прежде всего я вообще никого ни к чему не призывал, а только спрашивал Тем не менее ,
сравнение, как мне кажется, несколько неправильное. Директивой include вы просто вставляете
файл, являющийся по сути своей тем же самым фрагментом программы на языке того же самого
C, (кстати аналогичную вставку файла можно сделать и в bash), тут скорее было бы более
уместно сравнить с подключением библиотек - такая то библиотека стандартная, а такая то нет

Ну да ладно, я уже понял, задачу за меня вы решать не собираетесь Придется самому -
прикола ради
...
Рейтинг: 0 / 0
Фильтрация и редактирование текста
    #32498368
Их есть у меня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ув. 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 - внешние ????? ))))
...
Рейтинг: 0 / 0
Фильтрация и редактирование текста
    #32498377
Somebody2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oops
Немного опоздал - спасиб, будем смотреть
...
Рейтинг: 0 / 0
Фильтрация и редактирование текста
    #32498386
Somebody2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>а теперь подумаем - если команды echo и test - внешние ????? ))))
У bash они есть и в числе встроенных. Не знаю какую bash предпочитает по умолчнаию (при
наличии внешних echo и test) Да и какая разница?
...
Рейтинг: 0 / 0
Фильтрация и редактирование текста
    #32498442
Их есть у меня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот можно ли это сделать на чистом sed ???
...
Рейтинг: 0 / 0
Фильтрация и редактирование текста
    #32498501
Их есть у меня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну раз все молчат - вот решение ))
(чистый sed; cat myfile | ./test.sed > myfile2)

#######################

#!/bin/sed -nf

/\*\*\*/ h
x
/\*\*\*/ {
x
p
}
/;/ {
q
}

######################
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Фильтрация и редактирование текста
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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