Как пронумеровать все строки в файле.

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
ViktorioGaio
проходил мимо
Сообщения: 3
Зарегистрирован: 2011-10-18 0:42:44

Как пронумеровать все строки в файле.

Непрочитанное сообщение ViktorioGaio » 2011-10-18 0:54:41

Имеется файл. нужно промумеровать в нем все строки и сохранить. Строк много, в ручную никак. Формат такой
ДО
строка1
строка2
строка3
ПОСЛЕ
1 строка1
2 строка2
3 строка3

на выводе получается нумеровать командой: sed = File.txt | sed 'N;s/\n/ /', но а в самом файле никак не получается

ps: googe не рекомендовать :bad:

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Electronik
капитан
Сообщения: 1593
Зарегистрирован: 2008-11-15 17:32:56
Откуда: Минск
Контактная информация:

Re: Как пронумеровать все строки в файле.

Непрочитанное сообщение Electronik » 2011-10-18 9:39:44

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

 sed = File.txt | sed 'N;s/\n/ /' >> new_file.txt
Предскажем будущее hw по логам и дампу, снимем сглаз и порчу с рута, поможем придумать пароль(С)
Блог

Аватара пользователя
gumeniuc
ст. сержант
Сообщения: 343
Зарегистрирован: 2009-11-08 15:46:05
Откуда: md
Контактная информация:

Re: Как пронумеровать все строки в файле.

Непрочитанное сообщение gumeniuc » 2011-10-19 11:49:08

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

cat -n file.txt > newfile.txt
Да шо ему сделается...

ViktorioGaio
проходил мимо
Сообщения: 3
Зарегистрирован: 2011-10-18 0:42:44

Re: Как пронумеровать все строки в файле.

Непрочитанное сообщение ViktorioGaio » 2011-10-19 19:47:28

в том и дело, что новый файл создавать нельзя.
все изменения должны быть в исходном файле.

Аватара пользователя
gumeniuc
ст. сержант
Сообщения: 343
Зарегистрирован: 2009-11-08 15:46:05
Откуда: md
Контактная информация:

Re: Как пронумеровать все строки в файле.

Непрочитанное сообщение gumeniuc » 2011-10-19 22:15:53

а если так ?

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

sed = File.txt | sed -i 'N;s/\n/ /'
Да шо ему сделается...

Аватара пользователя
Electronik
капитан
Сообщения: 1593
Зарегистрирован: 2008-11-15 17:32:56
Откуда: Минск
Контактная информация:

Re: Как пронумеровать все строки в файле.

Непрочитанное сообщение Electronik » 2011-10-19 23:25:10

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

mv File.txt tmp_File.txt && sed = tmp_File | sed 'N;s/\n/ /' >> File.txt
Предскажем будущее hw по логам и дампу, снимем сглаз и порчу с рута, поможем придумать пароль(С)
Блог

Аватара пользователя
FreeBSP
майор
Сообщения: 2020
Зарегистрирован: 2009-05-24 20:20:19
Откуда: Москва

Re: Как пронумеровать все строки в файле.

Непрочитанное сообщение FreeBSP » 2011-10-20 0:26:00

эээ

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

cat -n _FILE_ > _FILE_
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!

ViktorioGaio.
проходил мимо

Re: Как пронумеровать все строки в файле.

Непрочитанное сообщение ViktorioGaio. » 2011-10-21 6:15:09

КАК ТО НЕ КОШЕРНО СОЗДАВАТЬ ВРЕМЕНЫЙ/ПРОМЕЖУТОЧНЫЙ ФАЙЛ когда он весит пару гигов...... поэтому и надо сделать все в исходном.

ViktorioGaio.
проходил мимо

Re: Как пронумеровать все строки в файле.

Непрочитанное сообщение ViktorioGaio. » 2011-10-21 6:28:56

как нибудь так
var=1
cat file.txt |while read line; do sed -i 's/$line/$var $line/g' file.txt ; var=$(($var+1)); done;
так не работает


а так совсем не то делает
var=1
cat file.txt |while read line; do sed -i 's/^/$var/' file.txt ; var=$(($var+1)); done;

Аватара пользователя
Electronik
капитан
Сообщения: 1593
Зарегистрирован: 2008-11-15 17:32:56
Откуда: Минск
Контактная информация:

Re: Как пронумеровать все строки в файле.

Непрочитанное сообщение Electronik » 2011-10-21 11:48:11

а можно узнать с какой целью вы хотите нумеровать строки в таком большом файле?
Предскажем будущее hw по логам и дампу, снимем сглаз и порчу с рута, поможем придумать пароль(С)
Блог

Аватара пользователя
Morty
ст. лейтенант
Сообщения: 1370
Зарегистрирован: 2007-07-17 23:25:12

Re: Как пронумеровать все строки в файле.

Непрочитанное сообщение Morty » 2011-10-21 12:34:51

в vi(vim)e открой

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

:set number
все пронумеровано ))

ViktorioGaio.
проходил мимо

Re: Как пронумеровать все строки в файле.

Непрочитанное сообщение ViktorioGaio. » 2011-10-23 9:51:37

спасибо за пример. но это аналогично cat -n - не подходит.надо что бы в файле пронумеровалось. не создавая копию\временный файл.

Аватара пользователя
gumeniuc
ст. сержант
Сообщения: 343
Зарегистрирован: 2009-11-08 15:46:05
Откуда: md
Контактная информация:

Re: Как пронумеровать все строки в файле.

Непрочитанное сообщение gumeniuc » 2011-10-23 10:14:57

простите, а чем sed -i не устраивает ? у меня на ходу заменяет и пишет в файл. У Вас не так ?
Да шо ему сделается...

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Как пронумеровать все строки в файле.

Непрочитанное сообщение kpp » 2011-11-13 16:07:14

У меня sed -i не работает... может кто просветит что не так?

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

sed = vhod | sed -i 'N;s/\n/ /'
sed: -I or -i may not be used with stdin

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

# uname -a
FreeBSD 8.2-RELEASE
Если нельзя явно создавать временный файл, может вычитать весь файл в переменную, а потом эту переменную записать в исходный файл?

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

temp="`cat -n vhod`"
echo "${temp}" > vhod
Не знаю, правда, есть ли какие ограничения на размер переменной.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Как пронумеровать все строки в файле.

Непрочитанное сообщение kpp » 2011-11-13 16:15:03

С файлом 145Мб отработало, с 1221Mб - болтозавр - Out of space
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

BlackCat_not_logged
проходил мимо

Re: Как пронумеровать все строки в файле.

Непрочитанное сообщение BlackCat_not_logged » 2011-11-20 17:51:23

Ключик -i - это GNU-расширение sed'а и на большенстве xBSD систем такой трюк не прокатит.
Использовать его (ключ -i) на файле весом в гиг - тоже плохая затея, так как файл храниться байтиками, а не строками и после модификации строку нельзя писать сразу назад файл: строка становиться больше на несколько байт и её записть повлечёт затирание начала следующей строки. Так что sed сам будет вынужден создать временный файл или делать все операции в памяти (предварительно затянув туда весь файл или храня весь результат в памяти).
Так что единственный доступный вариант - это использование временного файла. И вы будете чувствовать себя сухо и комфортно.

Аватара пользователя
manefesto
Группенфюррер
Сообщения: 6934
Зарегистрирован: 2007-07-20 8:27:30
Откуда: Пермь
Контактная информация:

Re: Как пронумеровать все строки в файле.

Непрочитанное сообщение manefesto » 2011-11-21 13:53:29

sed'ом нельзя в онлайне редактировать, только через временный
я такой яростный шо аж пиздеЦ
Изображение