Слияние файлов один ко многим - PullRequest
2 голосов
/ 25 ноября 2010

file1.txt

10

file2.txt

05--Nov--2010--Friday 23:24:57,06--Nov--2010--Saturday  8:23:34

06--Nov--2010--Saturday  8:23:34,06--Nov--2010--Saturday  9:56:22

Я хочу создать файл потока, как показано ниже [Использование сценария оболочки].

file3.TXT

10,05--Nov--2010--Friday 23:24:57,06--Nov--2010--Saturday  8:23:34

10,06--Nov--2010--Saturday  8:23:34,06--Nov--2010--Saturday  9:56:22

Ответы [ 4 ]

2 голосов
/ 25 ноября 2010
#!/bin/bash
rm -f file3.txt
prefix=$(cat file1.txt)
for i in $(cat file2.txt)
do
    echo $prefix,$i >> file3.txt
done
1 голос
/ 26 ноября 2010

Вот альтернативный вариант ответа Гленна Джекмана:

awk -v pf=file1.txt 'BEGIN{getline p<pf;OFS=","} {print p,$0}' file2.txt > file3.txt

Основное отличие состоит в том, что если file1.txt имеет более одной строки, моя будет использовать первую строку, а его - последнюю.

1 голос
/ 25 ноября 2010
awk 'NR==FNR {prefix=$0; next} {print prefix "," $0}' file1.txt file2.txt > file3.txt

Переменная awk NR - это номер текущей строки всех входных строк, FNR - номер строки текущего файла: NR == FNR имеет значение true только для строк в первом файле, которые читает awk.

1 голос
/ 25 ноября 2010
awk '{print '`cat file1.txt`' "," $0}' file2.txt > file3.txt

Или

line=`cat file1.txt`;
awk '{print '`echo $line`' "," $0}' file2.txt > file3.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...