Страница 1 из 1

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

Добавлено: 24 фев 2007, 01:38
Llama
Тупой вопрос наверное, но:
1) Как получить из файла (в частности и из STDIN) все строки кроме трех первых
2) Как получить из файла (в частности и из STDIN) все строки без 5, 7 и 29 строки

Добавлено: 24 фев 2007, 02:11
Foxx
Например:

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

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

Добавлено: 24 фев 2007, 02:14
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
А потом может как-нибудь замутить регулярное выражение, читающее всё после цифры(номер строки)+пробел ? К сожалению в рег. выр.я не силён, поэтому могу и ошибаться...

Добавлено: 24 фев 2007, 10:35
Eugene
1) sed -ne '4,$p' yourfile
2)
sed -e '5d
quote> 7d
quote> 29d' yourfile

Добавлено: 25 фев 2007, 14:37
Victor Gr.

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

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

Добавлено: 25 фев 2007, 20:23
Llama
Victor Gr., на perl я и сам могу ;) Вопрос был про shell.

Добавлено: 26 фев 2007, 10:31
Hermit

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

tail +3 [FILE]