我正在创建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
谢谢
由于单词拆分,你得到空格而不是行.你应该用双引号引用你的变量
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