склеить два файла

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

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

Аватара пользователя
susik
Сообщения: 81

склеить два файла

Сообщение susik »

понадобилось склеить два файла по строчно. Как это сделать на (shell+ (sed or awk) пока придумать не могу. Я призняться не силен в программировании, Если не сложно подскажитте как написать.
Они не были Боги, откуда им знать про добро и зло?
Спасибо сказали:
Pavel Ghost
Сообщения: 13
ОС: openSUSE 10.2

Re: склеить два файла

Сообщение Pavel Ghost »

Смотря каких файлов - текстовых или двоичных.

Для первых - самый простой вариант:
cat file1.txt file2.txt > result_file.txt
Oracle DBA
GeneGO
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: склеить два файла

Сообщение elide »

Смотря каких файлов - текстовых или двоичных.
хм... а чем они отличаются с точки зрения поставленной задачи?
слава роботам!
Спасибо сказали:
BaBL
Сообщения: 767
ОС: Debian GNU/Linux SID

Re: склеить два файла

Сообщение BaBL »

elide писал(а):
14.01.2007 22:33
Смотря каких файлов - текстовых или двоичных.
хм... а чем они отличаются с точки зрения поставленной задачи?

ну здесь больше не "текстовый" и "двоичный", а вообще по типам файлов. К примеру wav и mp3 катом тоже склеиваются, а вот два жпега в удвоенный жпег не превратятся.
Спасибо сказали:
Mellon
Сообщения: 655
Статус: Powered by Gentoo
ОС: Gentoo

Re: склеить два файла

Сообщение Mellon »

Так, и я задам похожий вопрос (порсто интересно).
Как быстро склеивать БОЛЬШИЕ файлы (<4Gb)?
Подробней.
Как известно, файл на диске может лежать не одним куском, а в разброс. То есть, в принципе, можно склеить файлы не читая их. Как это сделать?
Некоммерческий файлообмен не может сравниваться с кражей, так как кража лишает кого-то возможности использовать украденный объект. ©
--------------------
Переворачиватель пингвинов
Спасибо сказали:
d_n_k
Сообщения: 636
ОС: Gentoo GNU/Linux

Re: склеить два файла

Сообщение d_n_k »

Как известно, файл на диске может лежать не одним куском, а в разброс. То есть, в принципе, можно склеить файлы не читая их. Как это сделать?

хочешь менять структуру файловой системы?

тогда читай маны по утилитам к твоей файловой системе.

а так man cat man dd
все сказанное есть имхо...
Спасибо сказали:
Аватара пользователя
susik
Сообщения: 81

Re: склеить два файла

Сообщение susik »

Pavel Ghost писал(а):
14.01.2007 22:19
Смотря каких файлов - текстовых или двоичных.

Для первых - самый простой вариант:
cat file1.txt file2.txt > result_file.txt

Спасибо что откликнулись, файлы текстовые, но этот вариант к сожелению не подойдет, так как склеить необходимо таким образом (в строку из первого файла пишется первая строка из втрого файла, в вторую строку из первого файла пишется вторая строка из второго файла и т.д.)
Они не были Боги, откуда им знать про добро и зло?
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: склеить два файла

Сообщение elide »

susik
приведи пример, что в первом файле, что во втором и что нужно получить.
а то ничего не понятно...
слава роботам!
Спасибо сказали:
Slimy
Сообщения: 1689
ОС: openSuSE 11.2 GM (GеMор едишн)

Re: склеить два файла

Сообщение Slimy »

d_n_k писал(а):
15.01.2007 10:53
Как известно, файл на диске может лежать не одним куском, а в разброс. То есть, в принципе, можно склеить файлы не читая их. Как это сделать?

хочешь менять структуру файловой системы?

тогда читай маны по утилитам к твоей файловой системе.

а так man cat man dd

Это явно опасный способ и грозит тем что может навернуть все ф.с. Да и в безопасности какая дыра программе с такими правами ничего не стоит поменять хотябы файлик в ядром :dry: .Может есть какие системные вызовы ориентированные на это дело?
Если уже ничего не помогает - прочти инструкцию.
sysinstall - гадость :)
ASUS A6q00Vm Pentium-M 1.7 GHz, 2Gb RAM, 160Gb HDD,
GeForce Go 7300 64Mb video
Спасибо сказали:
Аватара пользователя
susik
Сообщения: 81

Re: склеить два файла

Сообщение susik »

elide писал(а):
15.01.2007 18:29
susik
приведи пример, что в первом файле, что во втором и что нужно получить.
а то ничего не понятно...

Ну у меня была задача такая, я ее решил правда немного подругому, но все равно стало интересно как склеить два файла.
Значит в первом файле, назовем его допустим file1.txt, следующая информация:
mv 'Track 1 Albom 1.mp3.HWFIUFG09345034THEEGH.test'
mv 'Track 2 Albom 1.mp3.KJDHF39048UT930GUJDJFF.test
mv 'Track 2 Albom 1.mp3.JISH904JF.test'

А во втором файле
'Track 1 Albom 1.mp3'
'Track 2 Albom 1.mp3'
'Track 3Albom 1.mp3'


А результат в третьем файле должен быть:

mv 'Track 1 Albom 1.mp3.HWFIUFG09345034THEEGH.test' 'Track 1 Albom 1.mp3'
и т.д.
Вот я и хотел склеить файлы, что бы собрать команду mv по переименованию файлов.


Вообще первоначальная задача стояла переименовать файлы в директории типа 'Track 2 Albom 1.mp3.JISH904JF.test'.
Половина файлов я смог переименовать, а в оставшихся файла в названии присутствовали пробелы (как в приведенном примере)
У меня задача не решалась из-за того что если я загонял в цикл for имена файлов где есть пробелы, то у меня полечалось не 1 переменная, а соттвественно несколько, поэтому я решил список файлов загнать в файл. Получил два файла которые я привел выше.
Они не были Боги, откуда им знать про добро и зло?
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: склеить два файла

Сообщение elide »

ну если так, то попробуй делать не "for i in *.mp3", как ты скорее всего делал, а что-то вроде "/bin/ls *.mp3 | while read i; do echo ">> $i <<"; done" и увидишь, что имена файлов не будут рваться на пробелах...
слава роботам!
Спасибо сказали:
d_n_k
Сообщения: 636
ОС: Gentoo GNU/Linux

Re: склеить два файла

Сообщение d_n_k »

/bin/ls *.mp3

имхо, find -exec всегда лучше
все сказанное есть имхо...
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: склеить два файла

Сообщение elide »

d_n_k
в этом поганом мире вообще не существует способа, который _всегда_ лучше...
слава роботам!
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: склеить два файла

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

(elide @ Jan 16 2007, в 09:39) писал(а):/bin/ls
Кстати. Если ты это на предмет наличия алиаса на ls, то можно просто \ls.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
Totktonada
Сообщения: 3
ОС: Gentoo Linux

Re: склеить два файла

Сообщение Totktonada »

Отвечу на первоначальный вопрос: утилита paste из coreutils.
Благодарю алфавит за предоставленные буквы
Спасибо сказали:
Аватара пользователя
Crazy
Сообщения: 862
Статус: Адепт Дзен.
ОС: Mint, Win7.

Re: склеить два файла

Сообщение Crazy »

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

#!/usr/bin/perl

my $outFileName = pop @ARGV;
my $file2 = pop @ARGV;
my $file1 = pop @ARGV;

print "@ARGV[2]\n";
open(INF1, $file1)or die "Can't open file $file1:$!\n ";
open(INF2, $file2)or die "Can't open file $file2:$!\n ";
open(OUTF, ">$outFileName")or die "Can't open file $outFileName:$!\n ";

while(<INF1>){
  chomp $_;
  my $line = <INF2>;
  print OUTF "$_ $line";
}

close(INF1);
close(INF2);
close(OUTF);

Desipere in loco
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: склеить два файла

Сообщение allez »

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

Re: склеить два файла

Сообщение drBatty »

allez писал(а):
05.11.2010 05:04
А ничего, что тема изжила себя почти четыре года назад? ;)

ответа не было. Вот мой ответ:

Shell

$ sed -e 'R 2.txt' 1.txt | sed 'N; s/\n/ / mv 'Track 1 Albom 1.mp3.HWFIUFG09345034THEEGH.test' 'Track 1 Albom 1.mp3' mv 'Track 2 Albom 1.mp3.KJDHF39048UT930GUJDJFF.test 'Track 2 Albom 1.mp3' mv 'Track 2 Albom 1.mp3.JISH904JF.test' 'Track 3Albom 1.mp3'

http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Totktonada
Сообщения: 3
ОС: Gentoo Linux

Re: склеить два файла

Сообщение Totktonada »

allez писал(а):
05.11.2010 05:04
Totktonada
Crazy
А ничего, что тема изжила себя почти четыре года назад? ;)

Ничего-ничего. Форум часто используется как сборник рецептов.
Благодарю алфавит за предоставленные буквы
Спасибо сказали: