LINUX.ORG.RU

Вопрос по Shell


0

0

Доброе время суток! Нужно написать программу которая в заданном текстовом файле переносит третью от конца строчку в начало файла. Заранее спасибо.

tail -n 3 your_file_name | head -1 > tmp_file

head -n $[`cat your_file_name | wc -l`-3] your_file_name >> tmp_file

tail -n 2 your_file_name >> tmp_file

cat tmp_file > your_file_name

Ну что-то типа такого :)) Только при условии ньюлайна в конце файла :)

andrey85
()
Ответ на: комментарий от val-amart

если нужны результаты в том же файле, что и входной, добавь
mv $1.new $1
по вкусу

val-amart ★★★★★
()

Благодарю! Спасибо огромное всё работает) А пионер-это да) Ща шел тока первый семестр идёт)

pchelzdec
() автор топика

$ cat zz
line 1 
line 2
line 3
line 4
line 5
line 6
$ printf '$-2 m 0\nw\n' | ed zz 2>/dev/null
$ cat zz 
line 4
line 1 
line 2
line 3
line 5
line 6

учись, студент :)

bigbit ★★★★★
()
Ответ на: комментарий от awesome

немного пеара: Компьютерная Академия ШАГ, для программистов и админов. но мы не университет

val-amart ★★★★★
()
Ответ на: комментарий от bigbit

> $ printf '$-2 m 0\nw\n' | ed zz 2>/dev/null

красиво)...

менее эффективный (видимо, второй tac будет медленным), just for fun:

tac <file>|sed '3{h;d};$G'|tac

grimp3ur
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.