Хорошо, кажется, что это должно быть передано как третий аргумент KEYSYM:
xmodmap -e "keycode 47 = colon semicolon Cyrillic_ZHE"
Если я хорошо понял твой вопрос, то это звучит как типичный join ("Объединить строки на общем поле") используйте случай :
join --header -j 4 -t $'\t' file1.txt file2.txt
Вы получаете 7 столбцов для каждой совпадающей строки.
Вот что я получаю (для слегка измененных данных смотрите ниже):
Column_4 Column_1 Column_2 Column_3 Column_1 Column_2 Column_3
D2 A2 B2 C2 Aa2 Bb2 Cc2
D3 A3 B3 C3 Aa3 Bb3 Cc3
D8 A8 B8 C8 Aa8 Bb8 Cc8
(извините, что вкладки здесь не очень красиво отображаются):
Column_4 - это ваше значение совпадения, и оно приходит первым. Вы можете сравнить значения других столбцов, как вы просили в своей цели.
Если вам нужны только вторые столбцы таблицы, используйте:
join --header -j 4 -o 2.1,2.2,2.3,2.4 -t $'\t' file1.txt file2.txt
Однако, join
ожидает, что его входные файлы будут отсортированы, поэтому вам нужно передать их через сортировку
и отсортировать их на 4-м поле сначала:
join --header -j 4 -o 2.1,2.2,2.3,2.4 -t $'\t' <(sort -k4 file1.txt) <(sort -k 4 file2.txt)
Для лучшего демо-версии я предлагаю немного другие исходные файлы (хм, это было до того, как вы их редактировали)
file1:
Column_1 Column_2 Column_3 Column_4
A0 B0 C0 D0
A2 B2 C2 D2
A3 B3 C3 D3
A8 B8 C8 D8
file2:
Column_1 Column_2 Column_3 Column_4
Aa1 Bb1 Cc1 D1
Aa2 Bb2 Cc2 D2
Aa3 Bb3 Cc3 D3
Aa4 Bb4 Cc4 D4
Aa5 Bb5 Cc5 D5
Aa6 Bb6 Cc6 D6
Aa7 Bb7 Cc7 D7
Aa8 Bb8 Cc8 D8
Aa9 Bb9 Cc9 D9
Решение awk
:
$ awk -F"\t" 'FNR==NR{a[$4];next}; $4 in a' OFS="\t" file1 file2
Column_1 Column_2 Column_3 Column_4
Aa2 Bb2 Cc2 D2