У меня есть два файла, из которых я хочу создать третий, который содержит всю информацию.
файл 1:
a 111
b 222
c 333
d 666
e 777
файл 2:
111 x1
222 x2
333 x3
444 x4
555 x5
666 x6
777 x7
888 x8
Я хотел бы объединить их следующим образом:
111 x1 a
222 x2 b
333 x3 c
444 x4 0
555 x5 0
666 x6 d
777 x7 e
888 x8 0
Замечания:
Второй столбец файла 1 является подмножеством первого столбца файла 2
command-line
text-processing
gforce89
источник
источник
-e0
не нужно Perl :)Используя соединение:
Команда join объединяет строки двух файлов, которые имеют общее поле данных. В этом случае: Соедините файл2 и файл1, используя поле 1 (
-1 1
) файла2 и поле 2 (-2 2
) файла1.Выводом будет: «объединенное поле, поле 2 файла2, поле 1 файла1» (
-o'0,1.2,2.1'
), если пропущенное поле занято 0 (-e0
)Если в одном из двух файлов больше записей, добавьте их (в данном случае file2) (
-a1
)Пожалуйста, обратитесь к man-странице команды join
источник
Немного
awk
магии:или
Вывод
объяснение
FNR==NR{a[$2]=$1;next}
Запускает over
file1
(FNR==NR
) и создает структуру ключ-значение. Ключ - второй столбец ($2
)file1
, значение - первый столбец ($1
)file1
{if(a[$1]==""){a[$1]=0};print $1,$2,a[$1]}
Пробегает
file2
иif(a[$1]==""){a[$1]=0}
Если ключ в первом столбце (
$1
) вfile2
не существует вfile1
, нам нужно0
print $1,$2,a[$1]
Выведите (используя
print
) первый и второй столбцыfile2
и значение структуры ключ-значение с ключом первого столбца ($1
) изfile2
или
printf "%s%s%s%s%s\n",$1,FS,$2,FS,a[$1]}'
Выведите (используя
printf
) первый и второй столбцыfile2
и значение структуры ключ-значение с ключом первого столбца ($1
) изfile2
.FS
разделитель между столбцами, взятый из входного файла"%s%s%s%s%s\n"
форматирование для вывода
%s
- Строка\n
- Новая линияисточник
Используя q :
Иногда это может быть более читабельным.
источник
q
есть в пакетеpython3-q-text-as-data
(Python 3) и в пакетеpython-q-text-as-data
(Python 2).q
пакет? Я , кажется, не быть в состоянии установить либоpython-q-text-as-data
илиpython3-q-text-as-data
. Msgstr "E: Невозможно найти пакет python3-q-text-as-data". Моя система уже установленаpython
,python2.7
,python3
иpython3.4
.