хвост -n 1 ревизии.log | awk '{ print substr ($0, 0, length ($0 )-(length ($0 )-13 ))}'
Если вы хотите напечатать первые тринадцать символов с начала
Не знаю, правильно ли я понял вопрос, но вам нужно отсортировать файл по столбцу, который вы хотите использовать в качестве параметра для объединения:
join -1 2 -2 1 <(sort file1 -k2b,2) <(sort file2)
123 Stef. SE 383
827 Stef uq hd
РЕДАКТИРОВАТЬ :, если вы хотите определенный порядок:
join -1 2 -2 1 <(sort file1 -k2b,2) <(sort file2) | awk -F " " '{print $2 " " $1 " " $3 " " $4}'
Stef. 123 SE 383
Stef 827 uq hd
РЕДАКТИРОВАТЬ :добавить grep в фильтр, например показывать только Stef.а не Стеф (без точки)
join -1 2 -2 1 <(sort file1 -k2b,2) <(sort file2) | awk -F " " '{print $2 " " $1 " " $3 " " $4}' | grep "Stef\."
Stef. 123 SE 383
ПОСЛЕДНЕЕ РЕДАКТИРОВАНИЕ (Надеюсь)
Похоже, вы пропустили самое простое:
awk 'NR==FNR{A[$1];next}$2 in A' file2.txt file1.txt | grep "^Stef"
В зависимости от того, хотите ли вы, чтобы $1
точно соответствовало Stef
:
$ awk 'NR==FNR{a[$1]; next} (FNR==1) || (($2 in a) && ($1=="Stef"))' file2 file1
col1. col2 col2 col4
Stef 827 uq hd
или слова, начинающиеся с Stef
, например.Stef.
:
$ awk 'NR==FNR{a[$1]; next} (FNR==1) || (($2 in a) && ($1~/^Stef/))' file2 file1
col1. col2 col2 col4
Stef. 123 SE 383
Stef 827 uq hd