Bash — Упорядочить данные в соответствии с последовательностью первичных ключей без отображения первичного ключа

#bash #ubuntu

#bash #ubuntu

Вопрос:

У меня есть один текстовый файл, в котором хранятся критерии, которых нет в последовательности criteria.txt

 key2|criteria2|desc2|4
key1|criteria1|desc1|3    
key3|criteria3|desc3|4
  

Я хочу отобразить критерии, назначенные пользователю из criteria.txt в соответствии с его первым столбцом без отображения переменной первого столбца:

 criteria1    desc1
criteria2    desc2
criteria3    desc3
  

Я попробовал две строки кода. Первый из них

 awk -F'|' '{ printf "%s %-20s%sn", $1, $2, $3} criteria2.txt | sort
  

Это сортирует данные по ключу. Однако при этом будет выведена ключевая переменная. Итак, я попробовал вторую строку:

 awk -F'|' '{ printf "%-20s%sn", $2, $3} criteria2.txt | sort
  

Здесь отображаются критерии и описание, но они отсортированы по описанию, а не по ключу. Как мне отобразить desc и третий столбец без отображения ключевой переменной?

Редактировать:

Я использую этот код, и он работает:

 awk -F'|' '{ printf "%s %-20s%sn", $1, $2, $3} criteria2.txt | sort | cut -d' ' -f2-
  

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

1. Просто добавьте это к первой версии вашего конвейера awk: | cut -d' ' -f2- . Или отсортируйте перед вызовом awk: sort criteria2.txt | awk -F'|' '{ printf "%-20s%sn", $2, $3}'

2. я использую первое решение, и оно работает! Спасибо!!