#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’, следите за изменениями и постарайтесь не отставать, хорошо.: