awk :как распечатать значение ключа в файле env?

Возможно? Да, но существуют разные методы в зависимости от варианта использования.

Предположение :Пакет debian не имеет эквивалентного пакета в официальном репозитории Arch (или дистрибутива Arch ).

  1. Установитеyayс помощью pacman:

    .
     sudo pacman -S yay
    

Reason:yay — это помощник AUR , используемый для запроса и установки пакетов AUR . Если пакет debian уже был переупакован и опубликован в AUR кем-то другим.

  1. Установите package_nameс помощью yay:

     yay -S package_name
    

примечание:замените package_nameименем пакета debian из AUR . Он попытается установить зависимости самостоятельно, используя pacman.

Альтернатива

Предположение :Пакет Debian еще не был переупакован как пакет Arch в AUR.

  1. Установитеdebtapиз AUR, используяyay:

     yay -S debtap
    
  2. Создайте эквивалентный пакет, используяdebtap:

     sudo debtap -u
     debtap package_name.deb
    
  3. Установить с помощьюpacman:

     sudo pacman -U package_name.pkg
    

Не рекомендуется (возможно опасно)

Этот метод пытается установить пакет с использованием формата упаковки debian в Arch, что не рекомендуется из-за возможной опасности повреждения вашей установки. При использовании этого метода рекомендуется подготовить образ аварийного диска Arch и резервную копию пользовательских данных/пространства .

  1. Установитеdpkgс помощьюyay:

     yay -S dpkg
    
  2. Установите пакет Debian, используяdpkg:

     sudo dpkg -i package_name.deb
    

2
13.08.2020, 19:33
2 ответа
gawk '{ if ($0 = "APOLLO_KEY" ) { RS = "=" } ; { print $1 } }'

$0 = "APOLLO_KEY"назначит строку $0, сравнение — ==. Я не думаю, что вы хотите изменить запись разделитель RSздесь, но поле разделитель FS(, и вам нужно сделать это с помощью -Fили -vFS=в командной строке, поэтому он работает до того, как awk разделит строку ). Кроме того, здесь нет необходимости использовать явный оператор if , мы просто помещаем условие на весь блок кода.

Предполагая упрощенные данные (и определенно не использующие полный синтаксис оболочки! )это должно работать:

awk -F= '$1 == "APOLLO_KEY" { print $2 }'

Обратите внимание, что это прерывается, если значение содержит знаки =, так как оно принимает только второе поле в строке.

Если вам нужно иметь дело с такими значениями, одно из решений — вручную удалить все до первого =. Мы могли бы также передать имя поля вне кода, чтобы сделать его немного чище:

awk -v key=APOLLO_KEY -F= '$1 == key { sub(/^[^=]+=/, ""); print }'
4
18.03.2021, 23:12

awk -F "=" '{for(i=1;i<=NF;i++){if($i ~ /APOLLO_KEY/)print $(i+1)}}' filename

выход

service:abcd
0
18.03.2021, 23:12

Теги

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