Как изменить вывод «uname -m»

Предположим, что оба файла отсортированы по полю соединения:

$ join -1 3 -a 2 -o1.1,1.3,1.3 file1 file2
BMW N1 N1

TOYOTA N3 N3

Это выполняет реляционную операцию JOIN для двух файлов, используя третий столбецfile1-1 3)и первый и единственный столбец file2. Мы просим, ​​чтобы все строки file2были включены в вывод (с -a 2), даже непарные строки. Для вывода просим вывести все три поля первого файла (с флагом -o). Пустые поля в непарных строках останутся пустыми, но можно добавить -e something, чтобы заполнить их строкой something.

Если два файла не отсортированы по полю соединения, вы можете предварительно -отсортировать их, используя

sort -k3 -o file1 file1
sort -o file2 file2

или вы можете выполнить сортировку одновременно с соединением, если ваша оболочка поддерживает подстановку процессов, с помощью

join -1 3 -a 2 -o1.1,1.3,1.3 \
    <( sort -k3 file1 ) \
    <( sort file2 )
2
16.05.2020, 18:08
1 ответ

Так как это скрипт bash(, несмотря на .shрасширение ), вы всегда можете выполнить (внутриbash):

uname()
  if [ "$#" -eq 1 ] && [ "$1" = -m ]; then
    echo arm64
  else
    command uname "$@"
  fi

export -f uname

gclone.sh

То есть замените unameна экспортированную функцию, которая выводит то, что вы хотите, при передаче аргумента -m.

6
28.04.2021, 23:14

Теги

Похожие вопросы