linux - 过滤命令输出并将其保存在 Json 格式列表中的 Shell 脚本
问题描述
以前从未使用过 shell 脚本,但我需要在我当前的任务中使用。
所以我必须运行一个返回如下输出的命令:
awd54a7w6ds54awd47awd refs/heads/SomeInfo1
awdafawe23413f13a3r3r refs/heads/SomeInfo2
a8wd5a8w5da78d6asawd7 refs/heads/SomeInfo3
g9reh9wrg69egs7ef987e refs/heads/SomeInfo4
而且我需要遍历每一行输出,只获取“SomeInfo”部分并将其写入文件,格式如下:
["SomeInfo1","SomeInfo2","SomeInfo3"]
我试过这样的事情:
for i in $(some command); do
echo $i | cut -f2 -d"heads/" >> text.txt
done
但我不知道如何在不使用临时文件的情况下将其格式化为数组。
对不起,如果这个问题很愚蠢而且可能太简单了,我相信我可以自己解决,但我只是没有时间去做,因为它只是我个人想要实现的一个额外的便利功能。
解决方案
尝试这个
# json_encoder.sh
arr=()
while read line; do
arr+=(\"$(basename "$line")\")
done
printf "[%s]" $(IFS=,; echo "${arr[*]}")
然后调用
./your_command | json_encoder.sh
PS。我个人用 Vim 做这种数据按摩。
推荐阅读
- html - 剔除过滤器无法正常工作
- java - 使用 com.google.common.hash 中的 Hashing 类是否安全?
- php - PHP 无法加载 Imagick 库 - PHP 启动:无法加载动态库
- python - 如何获得滚动平均值并找到每个职业中男性和女性的百分比?
- jquery - 模糊不适用于数据表分页
- python - 如何将控制台输出写入 Flask 中的文本文件?
- html - 每次在下拉列表中显示所选值
- angular - Angular6 错误:找不到“string”类型的不同支持对象“cuisine”。NgFor 仅支持绑定到 Iterables,例如 Arrays
- zend-framework - Zend 语言环境编号格式
- java - 如果分数和等于1,如何写?