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

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

Добавлено: 2011-10-18 0:54:41
ViktorioGaio
Имеется файл. нужно промумеровать в нем все строки и сохранить. Строк много, в ручную никак. Формат такой
ДО
строка1
строка2
строка3
ПОСЛЕ
1 строка1
2 строка2
3 строка3

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

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

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

Добавлено: 2011-10-18 9:39:44
Electronik

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

 sed = File.txt | sed 'N;s/\n/ /' >> new_file.txt

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

Добавлено: 2011-10-19 11:49:08
gumeniuc

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

cat -n file.txt > newfile.txt

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

Добавлено: 2011-10-19 19:47:28
ViktorioGaio
в том и дело, что новый файл создавать нельзя.
все изменения должны быть в исходном файле.

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

Добавлено: 2011-10-19 22:15:53
gumeniuc
а если так ?

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

sed = File.txt | sed -i 'N;s/\n/ /'

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

Добавлено: 2011-10-19 23:25:10
Electronik

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

mv File.txt tmp_File.txt && sed = tmp_File | sed 'N;s/\n/ /' >> File.txt

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

Добавлено: 2011-10-20 0:26:00
FreeBSP
эээ

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

cat -n _FILE_ > _FILE_

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

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

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

Добавлено: 2011-10-21 6:28:56
ViktorioGaio.
как нибудь так
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;

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

Добавлено: 2011-10-21 11:48:11
Electronik
а можно узнать с какой целью вы хотите нумеровать строки в таком большом файле?

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

Добавлено: 2011-10-21 12:34:51
Morty
в vi(vim)e открой

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

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

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

Добавлено: 2011-10-23 9:51:37
ViktorioGaio.
спасибо за пример. но это аналогично cat -n - не подходит.надо что бы в файле пронумеровалось. не создавая копию\временный файл.

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

Добавлено: 2011-10-23 10:14:57
gumeniuc
простите, а чем sed -i не устраивает ? у меня на ходу заменяет и пишет в файл. У Вас не так ?

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

Добавлено: 2011-11-13 16:07:14
kpp
У меня 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
Не знаю, правда, есть ли какие ограничения на размер переменной.

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

Добавлено: 2011-11-13 16:15:03
kpp
С файлом 145Мб отработало, с 1221Mб - болтозавр - Out of space

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

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

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

Добавлено: 2011-11-21 13:53:29
manefesto
sed'ом нельзя в онлайне редактировать, только через временный

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

Добавлено: 2011-12-09 18:45:49
Lupo Alberto

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

nl test.txt