python - 在 shell 脚本/Python 中进行 Base 64 解码和解析字符串
问题描述
我已经输入了这样的 csv 文件,我想对 clientid 列的字符串进行 base64 解码。解码后我想解析数据并将数据以以下格式放置在输出中
ip,clientid,device
3.3.3.3,W3sNCiAgIm5hbWUiIDogImpzb24taWQiLA0KICAidmFsdWUiIDogIjEyMyINCn0sIHsNCiAgIm5hbWUiIDogIm5hbWUtaWQiLA0KICAidmFsdWUiIDogIjY3OCINCn0gXQ==,iPhone
7.7.7.7,W3sNCiAgIm5hbWUiIDogImpzb24taWQiLA0KICAidmFsdWUiIDogIjEyMyINCn0sIHsNCiAgIm5hbWUiIDogIm5hbWUtaWQiLA0KICAidmFsdWUiIDogIjY3OCINCn0gXQ==,Samsung
我想要在 csv 中的输出是
ip,clientid,device
3.3.3.3,json-id||123##name-id||678,iPhone
7.7.7.7,json-id||657##name-id||234,Samsung
我想单独使用shell脚本来做。像这样提取数据。但不知道如何解析shell脚本中的数据。
#!/bin/bash
awk -v FPAT='[^,]*|"[^"]+"' '{printf "%s", $1","substr($2,1,9999)","substr($3,1,15)}' input.csv >output.csv
echo "W3sNCiAgIm5hbWUiIDogImpzb24taWQiLA0KICAidmFsdWUiIDogIjEyMyINCn0sIHsNCiAgIm5hbWUiIDogIm5hbWUtaWQiLA0KICAidmFsdWUiIDogIjY3OCINCn0gXQ==" | base64 --decode
另一种选择是我可以处理 output.csv 并编写一个 python 脚本来获取 clientid 列的数据,然后解析并重写到文件。
如果可能的话,我们是否还可以确保在解析“name”键时应该有 name_id 或 json_id 然后我们才解析出这些值?
有人可以建议吗
解决方案
请您尝试以下方法:
while IFS=, read -r ip clientid device; do
if (( nr++ )); then
clientid=$(base64 -d <<< "$clientid" | jq -r '.[] | "\(.name)||\(.value)"' | awk 'ORS="##"' | sed 's/##$//')
fi
echo "$ip,$clientid,$device"
done < file.csv
输出:
ip,clientid,device
3.3.3.3,json-id||123##name-id||678,iPhone
7.7.7.7,json-id||123##name-id||678,Samsung
推荐阅读
- openstack - 使用 Kolla 的一体化模式部署 OpenStack,但在检查 MariaDB 端口活跃度时失败
- tampermonkey - 如何使用 tampermonkey 显示来自 gitlab wiki 中另一个站点的链接的内容?
- reactjs - '你不应该在外面使用
' 调试反应 - package - Ada:如何组织嵌套包
- reactjs - 纱线工作区共享包未在 create-react-app 中加载
- php - laravel 8 返回连接到 tcp://mail.infomaniak.com:465 Timed Out
- php - 即使成功后,ajax成功调用执行else条件
- python - 使用马尔可夫链将RGB图像转换为黑白(0-1)
- javascript - 如何以角度传递 Javascript 变量(JSON 数据)以在表中加载动态数据
- asp.net-core - .Net5 vs .Net Core 3 我应该选择哪一个作为目标