Шифрование с помощью GPG с использованием ключа, переданного в качестве аргумента CLI

В простом примере, который вы показываете, когда каждое из целевых слов появляется в файле только один раз, вы можете просто сделать:

$ paste fileB fileC | while read a b; do sed -i "s/$a/$b/" fileA; done
$ cat fileA
Hello John, how is your wife? where is grandpa? 

Команда paste распечатает данные из обоих файлов вместе:

$ paste fileB fileC
Peter   John
dad wife
mom grandpa

Мы передаем это через простой цикл при чтении , который будет перебирать каждую строку, сохраняя значение из fileB как $ a и значение из fileC как $ b . Затем команда sed заменит первое вхождение $ a на $ b . Это повторяется трижды.

Этот подход хорош, если вы знаете, что ваши целевые слова появляются в файле только один раз (они должны быть, иначе вам нужно будет предоставить более подробную информацию, которую мы можем использовать, чтобы определить, какое вхождение следует заменить), и если ваш файлы крошечные, как то, что вы показали. Для больших файлов это займет много времени и очень неэффективно, так как его нужно будет запускать один раз для каждой пары слов.

Итак, если у вас есть файлы большего размера, вам может потребоваться что-то вроде этого:

paste fileB fileC | 
    perl -lane '$words{$F[0]}=$F[1]} 
        END{open(A,"fileA"); while(<A>){s/$_/$words{$_}/ for keys %words; print}'
4
14.12.2016, 18:15
2 ответа

Используйте одну из опций - passphrase -... в пакетном режиме:

  • - passphrase-fd читает кодовую фразу из заданного файлового дескриптора

     echo mysuperpassphrase | gpg --batch -c --passphrase-fd 0 файл 
     
  • - файл-пароль читает кодовую фразу из заданного файла

     echo mysuperpassphrase> passphrase 
    gpg - -batch -c --passphrase-file файл парольной фразы 
     
  • - парольная фраза использует заданную строку

     gpg --batch -c --passphrase файл mysuperpassphrase 
     

Все они зашифруют файл file.gpg ) с использованием mysuperpassphrase .

10
27.01.2020, 20:48

Я попробовал принятый ответ, но ничего не вышло.

Я был наUbuntu 20.04.1 LTS

Посмотрите мой ответ , который у меня сработал

0
27.01.2021, 11:28

Теги

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