sh合并两个json
去除重复循环的键值对
先读取这json,然后进行比对,
计算合并前后大小
/storage/emulated/0/下载/Document/chat-store_2023-11-12 (2).json
/storage/emulated/0/下载/Document/chat-store_2023-11-12 (3).json
按照我的要求合并
#!/bin/bash
# 计算合并前的文件大小
original_size=$(du -b "/storage/emulated/0/下载/Document/chat-store_2023-11-12 (2).json" "/storage/emulated/0/下载/Document/chat-store_2023-11-12 (3).json" | awk '{s+=$1} END {print s}')
# 合并两个 JSON 文件并计算合并后的文件大小
merged_size=$(jq -s '.[0] * .[1]' "/storage/emulated/0/下载/Document/chat-store_2023-11-12 (2).json" "/storage/emulated/0/下载/Document/chat-store_2023-11-12 (3).json" | jq -s 'length' | awk '{print $1}')
echo "合并前大小: $original_size bytes"
echo "合并后大小: $merged_size bytes"
~ $ # 计算合并前的文件大小
~ $ original_size=$(du -b "/storage/emulated/0/ 下载/Document/chat-store_2023-11-12 (2).json" "/storage/emulated/0/下载/Document/chat-store_2023-11-12 (3).json" | awk '{s+=$1} END {print s}')
~ $
~ $ # 合并两个 JSON 文件并计算合并后的文件大小
~ $ merged_size=$(jq -s '.[0] * .[1]' "/storage/emulated/0/下载/Document/chat-store_2023-11-12 (2).json" "/storage/emulated/0/下载/Document/chat-store_2023-11-12 (3).json" | jq -s 'length' | awk '{print $1}')
~ $
~ $ echo "合并前大小: $original_size bytes"
合并前大小: 3584381 bytes
~ $ echo "合并后大小: $merged_size bytes"
合并后大小: 1 bytes
~ $
~ $
看起来已经成功计算了合并前后两个 JSON 文件的大小。根据输出,合并后的文件大小为 1 字节。这似乎有点不正常,因为合并后的文件应该比原来的文件大才对。
我怀疑问题出在合并的方式上。您可以尝试使用 jq
工具的 add
函数来合并这两个 JSON 文件,而不是使用 *
运算符。请尝试以下命令:
merged_size=$(jq -s '.[0] + .[1]' "/storage/emulated/0/下载/Document/chat-store_2023-11-12 (2).json" "/storage/emulated/0/下载/Document/chat-store_2023-11-12 (3).json" | jq 'length')
这样会使用 +
运算符来合并两个 JSON 文件,然后计算合并后的大小。希望这次能够得到正确的结果。