![]() |
TextPipe: несколько вопросов.
Вложений: 1
1. как обьединить 1ю и 2ю строку.
2. как заменить "двоеточие знак абзаца" на "двоеточие пробел" (не нашел в спец символах знака абзаца) 3. как найти 2ва определенных слова и удалить все что между ними. (например: ...как я провел лето... -> ...как лето...) 4. как сохранить конечный файл с именем из 1й строки этого файла. прикрепил архив с исходниками, если кто захочет взглянуть поглубже -) |
Классная программа... только вот я забыл, как ею пользовался :( .
|
Подскажите и мне пожалуйста.
Нужно удалить строки, в которых больше 7-ми слов. (один символ тоже считается словом) :) |
awk '{ if( NF<8 ) print}'
|
Цитата:
Цитата:
Как я понимаю это вообще в cmd пишется? Для символов работает такое: PHP код:
![]() |
Цитата:
Ведь удалить строки - это не цель. Не может быть у здравомыслящего человека такой цели. Это всё равно, что объявить целью копание ямы. Но ни одному нормальному человеку копать яму не нужно - ему нужно, чтобы она была выкопана. Безразлично каким образом. Это относится и к Вашему случаю. Я полагаю, Вы легко объясните преподавателю, что удалять строки - не самоцель. Цель - получить файл без этих строк. Логично? Что делаем: 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 |
Цитата:
Буду делать. В догонку, есть вариант проще? По идеи можно покрутить поле "Удалить не согласующиеся строки" и обойтись 10-15 символами. |
|
Цитата:
Удалить строки => Удалить не согласующиеся строки => Pattern (perl) => ^([^\s]+\s?){0,7}$ :) А в этом поможете? :) Как удалить строки, которые содержат только цифры? Как удалить строки, в которых есть "шт" (только целые слова и "шт" сразу после символов, например 100шт, 2шт)? Как удалить строки которые начинаются с символов? Например "01234567890" или "5448вебмастер" или "348953948 вебмастер" Как просеять строки по фильтру а-я, a-z, 0-9? Оставив строки, в которых нет каких либо любых спец. символов, а только буквы и символы. |
Время: 19:11. |
Время: 19:11.
© OSzone.net 2001-