gpg
попытается загрузить ключи из ~/.gnupg
и не будет отображать «Все ключи в системе», поскольку у каждого пользователя есть отдельная связка ключей. Ты не сможешь это сделать.
В вашем случае приложение gpg
попытается перечислить ключи из www-data
, php
или имя пользователя, которому принадлежит процесс php
.
Вы можете изменить расположение клавиш, манипулируя переменной окружения GNUPGHOME
или HOME
или задав для --homedir
значение gpg
. Эта опция доступна не во всех версиях gpg
.
Я бы предложил использовать awk для всего этого:
$ awk '
BEGIN {OFS="\t"; print "x1", "x2", "response_fn_1"}
$2 == "x1" {x1 = $1}
$2 == "x2" {x2 = $1}
$2 == "response_fn_1" {print x1, x2, $1}
' file | column -t
x1 x2 response_fn_1
-1.8961789208e+00 -1.3853582017e+00 2.4892772154e+03
3.7988695564e-01 1.5859091288e+00 2.0820416317e+02
Канал через column -t
предназначен только для красивой -печати -сам вывод awk представляет собой табуляцию -с разделителями
Если ваш файл результатов называется «входным»
for i in x1 x2 response_fn_1 ; do echo $i > $i; grep $i input | awk '{print $1}' >> $i ; done ; paste x1 x2 response_fn_1 | column -t
дает:
x1 x2 response_fn_1
-1.8961789208e+00 -1.3853582017e+00 2.4892772154e+03
3.7988695564e-01 1.5859091288e+00 2.0820416317e+02
Внимание! Это деструктивно создает файлы с именами x1 x2 и response _fn _1 в каталоге, в котором вы работаете. Если это настоящие файлы, они будут перезаписаны.
Мы можем сделать это, используя Perl в режиме slurp, и разбить файл на массив вокруг строки, начинающейся с Begin (вы можете украсить его в соответствии с вашими требованиями ). Затем из каждого элемента массива, сохраняя первый (нуль в Perl ), мы обнаруживаем строки только с двумя полями и сохраняем их в хеше %h с ключом на втором поле => значение как первое поле. Это мы получаем, обращая совпадения, которые мы получаем из регулярного выражения. А потом печатаем.
$ perl -F'/^Begin.+$/m' -ln -0777 -ae'
($,, @A) = ($", qw/x1 x2 response_fn_1/);
for(@F) {
my %h = reverse /^\s*(\S+)\s+(\S+)$/mg;
print(@A),next if ! $a++;
print @h{@A};
}
' initial.log | column -t