Вырезать строки из файла:

Здесь обсуждаются все вопросы, не попадающие под другие категории
Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Вырезать строки из файла:

Сообщение Llama »

Тупой вопрос наверное, но:
1) Как получить из файла (в частности и из STDIN) все строки кроме трех первых
2) Как получить из файла (в частности и из STDIN) все строки без 5, 7 и 29 строки
Опыт растет прямо пропорционально выведенному из строя оборудованию

Foxx
Неотъемлемая часть форума
Сообщения: 435
Зарегистрирован: 03 апр 2004, 17:05
Контактная информация:

Сообщение Foxx »

Например:

Код: Выделить всё

echo -e "1\n2\n3\n4\n5\n\6\n" | awk '{if(NR>3) printf("%s\n", $0)}' -
С изменениями справедливо и для второго случая. Или надо без пайпов и сторонних интерпретаторов выкрутиться?

Аватара пользователя
kif0rt
Неотъемлемая часть форума
Сообщения: 1371
Зарегистрирован: 03 ноя 2004, 01:49
Откуда: Минск

Сообщение kif0rt »

Не знаю, может пошаманить с cat -n <file> и регулярными выражениями ?

cat -n выводит строки с их номерами вначале :

Код: Выделить всё

kif0rt@Ubuntu:/tmp$ cat -n test
     1  dfdfdsf
     2  dsfdsf
     3  454
     4  54
     5  3543
     6  5
     7  g
     8  hgfh
     9  gfh
    10  55
    11  6
    12  54
    13  gb
    14  gfhgf
    15  hf
А потом может как-нибудь замутить регулярное выражение, читающее всё после цифры(номер строки)+пробел ? К сожалению в рег. выр.я не силён, поэтому могу и ошибаться...
Ненасилие ещё никому не помогало
Trying is the first step towards failure (c) Homer Simpson

Аватара пользователя
Eugene
Маньяк
Сообщения: 162
Зарегистрирован: 13 фев 2004, 15:02
Откуда: Minsk
Контактная информация:

Сообщение Eugene »

1) sed -ne '4,$p' yourfile
2)
sed -e '5d
quote> 7d
quote> 29d' yourfile
/born to bash/

[ updated: 2006-02-21 ]

/born to zsh/

Аватара пользователя
Victor Gr.
Неотъемлемая часть форума
Сообщения: 891
Зарегистрирован: 13 авг 2004, 15:39
Откуда: Минск
Контактная информация:

Сообщение Victor Gr. »

Код: Выделить всё

while (<>) { print unless (++$n =~ m/^(1|2|3|5|7|29)$/); }

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

Victor Gr., на perl я и сам могу ;) Вопрос был про shell.
Опыт растет прямо пропорционально выведенному из строя оборудованию

Hermit
Неотъемлемая часть форума
Сообщения: 354
Зарегистрирован: 22 сен 2004, 13:47
Откуда: Minsk
Контактная информация:

Сообщение Hermit »

Код: Выделить всё

tail +3 [FILE]

Ответить