gpt4 book ai didi

linux - 使用 awk 提取 key 的 BASH 脚本

转载 作者:IT王子 更新时间:2023-10-29 01:06:06 26 4
gpt4 key购买 nike

我正在创建 dkim 私钥和公钥openssl genrsa -out dkim1024.key 1024openssl rsa -in dkim1024.key -out dkim1024.pub -pubout -outform PEM

我有一个使用 awk 提取 key 文件的 bash 脚本键= /usr/bin/awk 'NR>1{a[++k]=$0}END{for(i=1;i<k;i++)print a[i]}' file.key

file.key 内容

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqasdfadaBAQUAA4GNADCBiQKBsdfadsfsDgrKE5D2atbGtaqVmAZwzy1YNY
8pUYgF6qQ4zecRrpk3Uam52asdfafasdasdfasgwYAA0x3roKIYAeHFFrFm9aCS
WKpM+na/03akmpewn4cjT4sm9qTHP0q/VM/YtHy3rGkPj+xzOKgO9rzyZo3E1a1O
HYu6TIqqzlqtadfafafafdas
-----END PUBLIC KEY-----

我需要删除线条。-----开始公钥----------结束公钥-----我已经在我的 awk cmd 中完成了这个但是当我回显 $KEY 时有空格。我猜这些是返回字符,但我不确定如何摆脱它们但保留 key 。

sh-3.2# echo $KEY
MIGfMA0GCSqasdfadaBAQUAA4GNADCBiQKBsdfadsfsDgrKE5D2atbGtaqVmAZwzy1YNY 8pUYgF6qQ4zecRrpk3Uam52asdfafasdasdfasgwYAA0x3roKIYAeHFFrFm9aCS WKpM+na/03akmpewn4cjT4sm9qTHP0q/VM/YtHy3rGkPj+xzOKgO9rzyZo3E1a1O HYu6TIqqzlqtadfafafafdas

谢谢

最佳答案

由于 word splitting,您得到的是空格而不是行.你应该用双引号引用你的变量

echo "$KEY"

这也可能是另一种解决方案:

awk '/-END PUBLIC KEY-/ { p = 0 }; p; /-BEGIN PUBLIC KEY-/ { p = 1 }' file.key

输出:

MIGfMA0GCSqasdfadaBAQUAA4GNADCBiQKBsdfadsfsDgrKE5D2atbGtaqVmAZwzy1YNY
8pUYgF6qQ4zecRrpk3Uam52asdfafasdasdfasgwYAA0x3roKIYAeHFFrFm9aCS
WKpM+na/03akmpewn4cjT4sm9qTHP0q/VM/YtHy3rGkPj+xzOKgO9rzyZo3E1a1O
HYu6TIqqzlqtadfafafafdas

即使在该 block 之前或之后还有其他行,该解决方案也适用。

你也可以用 Bash 本身来做:

#!/bin/bash

FILE='file.key' ## Or FILE=$1

KEY=()
while IFS=$' \t\r\n' read -r LINE; do
[[ $LINE == *'-END PUBLIC KEY-'* ]] && P=0
(( P )) && KEY+=("$LINE") ## Store every line as an array element.
[[ $LINE == *'-BEGIN PUBLIC KEY-'* ]] && P=1
done < "$FILE"

echo --------------------

printf '%s\n' "${KEY[@]}"

echo --------------------

IFS= eval 'MERGED_KEY="${KEY[*]}"' ## Merge key without spaces.

echo "$MERGED_KEY"

输出:

--------------------
MIGfMA0GCSqasdfadaBAQUAA4GNADCBiQKBsdfadsfsDgrKE5D2atbGtaqVmAZwzy1YNY
8pUYgF6qQ4zecRrpk3Uam52asdfafasdasdfasgwYAA0x3roKIYAeHFFrFm9aCS
WKpM+na/03akmpewn4cjT4sm9qTHP0q/VM/YtHy3rGkPj+xzOKgO9rzyZo3E1a1O
HYu6TIqqzlqtadfafafafdas
--------------------
MIGfMA0GCSqasdfadaBAQUAA4GNADCBiQKBsdfadsfsDgrKE5D2atbGtaqVmAZwzy1YNY8pUYgF6qQ4zecRrpk3Uam52asdfafasdasdfasgwYAA0x3roKIYAeHFFrFm9aCSWKpM+na/03akmpewn4cjT4sm9qTHP0q/VM/YtHy3rGkPj+xzOKgO9rzyZo3E1a1OHYu6TIqqzlqtadfafafafdas

关于linux - 使用 awk 提取 key 的 BASH 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25300578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com