Добавление строк в файл

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Grih65kop
Сообщения: 145

Добавление строк в файл

Сообщение Grih65kop »

Cуществует файл со следующим содержанием:

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

abcd
sdsd
wewe
bggggg
sdsd


Как и с помощью чего можно более рационально получить на выходе

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

abcd:123
sdsd:123
wewe:123
bggggg:123
sdsd:123
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Добавление строк в файл

Сообщение watashiwa_daredeska »

Если добавляется фиксированная строка, то

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

sed 's/$/:123/' <input >output
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Добавление строк в файл

Сообщение drBatty »

PS:
можно ещё на месте:
sed '...' -i file.txt
или
sed '...' -i*.bak file.txt
(последний вариант с бекапом)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
radial
Сообщения: 577
ОС: OpenSUSE

Re: Добавление строк в файл

Сообщение radial »

Конечно же так: загружаем файл в массив, обрабатываем элементы и записываем массив в файл.
бла-бла-бла, зато прикольно :)
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Добавление строк в файл

Сообщение drBatty »

radial писал(а):
11.06.2010 17:30
Конечно же так: загружаем файл в массив, обрабатываем элементы и записываем массив в файл.
бла-бла-бла, зато прикольно smile.gif

опять меня не поняли :(
sed - это потоковый редактор, он обрабатывает файлы построчно. sed может легко и быстро прогнать файл в 100Гб на компьютере с 512Мб памяти - я так неоднократно делал. Причём время работы sed в этом случае равно 0 (нулю) - копирование работает с той-же скоростью.
можете и в массив - если вам нечего делать. сомневаюсь, что у вас это получится лучше.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
radial
Сообщения: 577
ОС: OpenSUSE

Re: Добавление строк в файл

Сообщение radial »

мне просто нравится эта фича bash ;) (зато можно дописать в середину файла, поменять строки местами,..)
конечно, на для этого примера- не лучший вариант.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Добавление строк в файл

Сообщение t.t »

Это много для чего не лучший вариант. Как минимум, нужно знать, что размер файла строго ограничен.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
gluk47
Сообщения: 297
Статус: Любитель гвоздей и микроскопов
ОС: Kubuntu 17.10

Re: Добавление строк в файл

Сообщение gluk47 »

Не знаю, в эту ли тему...
Но очень интересует вопрос:
Есть файл data.txt с какими-то строками и файл labels.txt (по одному числу на строку), в каждом файле от 700 тысяч строк.

Нужно в конец каждой строки файла data.txt дописать число из соответствующей строки labels.txt
Как это сделать? Я, к сожалению, могу придумать только извращённейшие варианты вроде

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

i=0
cat data.txt|while read DATA; do
  LABEL=`head -$i labels.txt|tail -1`
  echo "$DATA $LABEL">labeled_data.txt
  (( i++ ))
done


Как запустить параллельное чтение в одном цикле строк из двух файлов? :)
[gluk47@gluk47-desktop ~]$ ензу куищще
куищще is aliased to `reboot'
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5488
ОС: Gentoo

Re: Добавление строк в файл

Сообщение /dev/random »

man paste ?
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Добавление строк в файл

Сообщение watashiwa_daredeska »

gluk47

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

paste -d' ' data.txt labels.txt
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Добавление строк в файл

Сообщение drBatty »

radial писал(а):
11.06.2010 19:27
зато можно дописать в середину файла, поменять строки местами

sed -i '666abc'
допишет после 666й строки

sed -i '666{ h; n; p; g }'
sed -ri '666{ N; s/(.*)\n(.*)/\2\n\1 }'
эти поменяют 666ю и 667ю

gluk47 писал(а):
11.06.2010 20:07
Я, к сожалению, могу придумать только извращённейшие варианты вроде


конечно paste!

но вот вам вариант на sed, ненамного медленнее, и может решить похожие задачи:

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

sed 'R num.txt' include.lst | sed 'N; s/\n/ /'
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: