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

#bash #unix

#bash #unix

Вопрос:

Итак, у меня есть два текстовых файла file1.txt

 s
j
z
z
e
  

и file2.txt

 s h
f a
j e
k m
z l
d p
e o
  

и что я хочу сделать, это сопоставить первую букву file1 с первой буквой файла 2 и вернуть второй столбец файла 2. так, например, исключенный вывод будет

 h
e
l
l
o
  

Я пытаюсь использовать join file1.txt file2.txt но это просто выводит весь второй файл. не уверен, как это исправить. Спасибо.

Комментарии:

1. Должен ли сохраняться порядок строк?

2. да, иначе я не смогу получить правильное сообщение («привет»).

Ответ №1:

Это классический awk:

 $ awk 'NR==FNR{a[$1]=$2;next}{print a[$1]}' file2 file1
h
e
l
l
o
  

Объяснено:

 $ awk '
NR==FNR {       # processing file2
    a[$1]=$2    # hash records, first field as key, second is the value
    next
} {             # second file
    print a[$1] # output, change the record with related, stored one
}' file2 file1
  

Комментарии:

1. Хорошо, э-э, хорошо, это, э-э, это старая история, но э-э, ну, там, откуда я родом, это старая история, э-э. Ладно, ребята, слушайте. Это блюзовый рифф в ‘B’, следите за изменениями и постарайтесь не отставать, хорошо.: