Сопоставьте файлы с разделением табуляцией

512 байтов в конце добавляются достаточно легко.

dd if=/dev/zero count=1 >> your.img

512 байтов в запуске, к сожалению, требуют перезаписи всего изображения.

dd if=your.img of=your.img.new seek=1

Очень необычно сделать это к изображению жесткого диска. Таким образом, я задаюсь вопросом, является ли это тем, что Вы действительно хотели.

3
10.08.2014, 02:34
2 ответа

Если не возражаете против порядка вывода:

$ join <(sort file1) <(sort file2)
COG0001 1140.Synpcc7942_0645 H
COG0001 1148.SYNGTS_2220 H
COG0001 882.DVU3168 H
COG0002 883.DvMF_2502 E
1
27.01.2020, 21:12

С помощью awk можно сделать так:

$ awk 'NR==FNR{a[$1]=$2;next}{print $0, a[$1]}' file2 file1
COG0001 882.DVU3168 H
COG0002 883.DvMF_2502 E
COG0001 1140.Synpcc7942_0645 H
COG0001 1148.SYNGTS_2220 H

Блок NR==FNR{a[$1]=$2;next} запускается для file2, а второе поле хранится на карте, используя первое поле в качестве ключа.

Блок {печать $0, a[$1]} запускается для file1 и печатает текущую строку, за которой следует значение, полученное с карты.

Если вы хотите, чтобы данные были табличными (с другими пробелами, не разделяющими поля), вы можете запустить awk -F'\t' ... , и если вы также хотите, чтобы выходные данные были разделены на закладки, используйте awk -F'\t' -v OFS='\t' .... .

6
27.01.2020, 21:12

Теги

Похожие вопросы