Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Сообщения: 2029
Благодарности: 704

Профиль | Отправить PM | Цитировать


Цитата regga5:
Удалить строки => Удалить не согласующиеся строки => »
Зачем их удалять? Это тоже можно сделать, но смысла в этом я не вижу никакого.
Ведь удалить строки - это не цель. Не может быть у здравомыслящего человека такой цели. Это всё равно, что объявить целью копание ямы. Но ни одному нормальному человеку копать яму не нужно - ему нужно, чтобы она была выкопана. Безразлично каким образом.
Это относится и к Вашему случаю. Я полагаю, Вы легко объясните преподавателю, что удалять строки - не самоцель. Цель - получить файл без этих строк. Логично?
Что делаем:
1. Выводим файл на стандартный вывод: "cat $1"
2. Используем фильтр, который пропускает только строки в которых менее 8 полей. Полем называется непрерывная последовательность непробельных символов (т.е. не содержащих пробела, вертикальной и горизонтальной табуляции, перевода строки и возврата каретки - тех символов, для которых функция языка C isspace() выдает ненулевое значение). Вы их называете "словами": awk '{ if( NF<8 ) print}'
3. После второго этапа мы получили на stdout поток из которого удалены все строки содержащие 7 и менее слов. Сохраняем его во временном файле: > $1.tmp
4. Переименовываем временный файл, заменяя им исходный - voila, задача выполнена: mv $1.tmp $1


Итого получили:
Код: Выделить весь код
cat $1 | awk '{ if( NF<8 ) print}' > $1.tmp; mv $1.tmp $1

-------
Господа! Убедительная просьба не обращаться за консультациями в ЛС. Поверьте, создать ветку в соответствующем разделе форума гораздо эффективнее.

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:23, 15-01-2014 | #6