BASH脚本使用awk提取密钥

 手机用户2502927987 发布于 2022-12-28 12:58

我正在创建dkim私钥和公钥openssl genrsa -out dkim1024.key 1024 openssl 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

file.key内容

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

我需要删除这些行.-----开始公共密钥----- -----结束公共密钥-----我在我的awk cmd中完成了这个但是当我回显$ KEY时有空格.我猜这些是返回字符,但我不知道如何摆脱它们但保留密钥.

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

谢谢

1 个回答
  • 由于单词拆分,你得到空格而不是行.你应该用双引号引用你的变量

    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
    

    即使在块之前或之后存在其他行,该解决方案也将起作用.

    您也可以使用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
    

    2022-12-28 13:00 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有