登录 立即注册

找到10230个回复

老虎会游泳 13楼回复 老虎会游泳在docker中手动安装宝塔面板(bt.cn) (2022-10-26//)

备注2:CentOS 7 docker需要安装 initscripts,否则 MySQL 无法重启

docker exec -it bt bash
yum install initscripts
庸人 14楼回复 庸人大佬萌们,如何从JQ中取出数组赋值给变量 (2022-10-26//)
@无名啊,好吧,我太笨了,我陷入了一个误区,就是因为-t删除了换行符,我的想法是想换行展示出来的,直接printf "%s\n"其实就行了🤣🤣
童真再见 7楼回复 童真再见c盘里有个乱码文件夹,是病毒还是哪个软件的? (2022-10-26//)

@老虎会游泳,只要 不是病毒就行,我还以为电脑里有隐藏病毒了呢
手机

老虎会游泳 83楼回复 老虎会游泳向日葵控控A2(OrayKVM)U盘救砖/USB恢复模式说明/免U盘刷机教程 (2022-10-26//)

刷入前需要把控控固件升级到最新版本(1.4.0)

老虎会游泳 12楼回复 无名啊用于解决树形结构存储的闭包表,凭什么能快速获取某个节点的祖先节点/父节点/子节点? (2022-10-26//)

@无名啊,只有这个
https://hu60.cn/q.php/bbs.newtopic.0.html

数据量太小,所以不需要辅助索引,直接select * from 表然后在内存里进行操作就行了

无名啊 11楼回复 无名啊用于解决树形结构存储的闭包表,凭什么能快速获取某个节点的祖先节点/父节点/子节点? (2022-10-26//)

@老虎会游泳,老虎这么多年,没有啥树形数据要存吗?之前都用的啥方案?

庸人 13楼回复 庸人大佬萌们,如何从JQ中取出数组赋值给变量 (2022-10-26//)
@无名啊,这我了解过一些,之前用while read line发现了<<<这个我多少还知道些,就是后面<<和<含义我不太清楚,一会儿我实践操练去
无名啊 12楼回复 庸人大佬萌们,如何从JQ中取出数组赋值给变量 (2022-10-26//)

@庸人

主要是我其实更习惯用管道这样的方式

不能在匿名管道内修改外部的变量!(如:jq | readarraysum=0; seq 3 | while read -r i; do (( sum += i )); done

理由

因为这会开启一个子 shell,然后在子 shell 中,readarrayjq 的输出转成数组。

等这一行执行完毕,子 shell 就会退出,刚整理好的数组也随着进程结束而消失了。

那用啥?

所以,只能用 <<<< <(...) 的形式。

  • 前者需要完全准备好一个字符串,再作为 stdin 喂给所在的命令。我觉得没必要,没这么干

    (试想,你拷贝一个 1GB 的文件,会申请 1GB 的内存,全部读取完成后,再写入至新文件吗?)

  • 后者,<(...) 是将 ...stdout 重定向至某个文件(一般是具名管道),然后将此文件作为 stdin 喂给所在命令

    (如果是管道实现,则一般是 4KB 缓冲区)

但是当我单拧出来一个数组,那么结尾就会有一个换行🤣🤣

使用 readarray 时指定 -t 参数,会自动删除行末的换行符

老虎会游泳 10楼回复 无名啊用于解决树形结构存储的闭包表,凭什么能快速获取某个节点的祖先节点/父节点/子节点? (2022-10-26//)

@无名啊,我没有回答这些问题所需的知识。如果我真的拿到这样的数据,我只能选择进行实际测试。

无名啊 9楼回复 无名啊用于解决树形结构存储的闭包表,凭什么能快速获取某个节点的祖先节点/父节点/子节点? (2022-10-26//)

@老虎会游泳,那个博主给出新的解决方案了,速度上确实应该会很快,但空间占用也很恐怖。。

更改表结构和建立索引

那个博主新的表结构为:

CREATE TABLE 闭包表 (
    祖先 INT,
    后代 INT,
    距离 INT,
    PRIMARY KEY (后代, 距离),
    KEY (祖先, 距离)
);

使得有如下两种索引:

  • 聚集索引:(后代, 距离, 祖先)
  • 二级索引:(祖先, 距离, 后代)

就能高效应对下列查询了:

  • (孙)子/后代节点:走二级索引 (✔查询节点, ✔1 或 2 或 任意, ❓<要获取的后代节点>)
  • (祖)父/祖先节点:走聚集索引 (✔查询节点, ✔1 或 2 或 任意, ❓<要获取的祖先节点>)

下列查询会小范围扫表,但问题不大:

  • 某后代节点与某祖先节点的距离:走聚集索引 (✔查询后代节点, ❓<要获取的距离>, ❌查询祖先节点)

    只要 查询后代节点 层级没有深到离谱,扫表范围也就连续的几行几十行而已。

占的空间太大了,怀疑性价比

一个 66W 的 5 级地区表,就要配套一个相当于 780W 的闭包表,快接近 12 倍于主表的辅助表了。。

如此恐怖的空间换时间方案,到底能快多少呢?真的值得投入这么多空间来提速吗?

庸人 11楼回复 庸人大佬萌们,如何从JQ中取出数组赋值给变量 (2022-10-26//)
图2挂了,这里
IMG_20221026_091024.jpg(38.08 KB)
庸人 10楼回复 庸人大佬萌们,如何从JQ中取出数组赋值给变量 (2022-10-26//)
@无名啊,大佬能不能细说一下你上面的命令,命令不怎么熟有点看不懂,主要是我其实更习惯用管道这样的方式<<这样定向的方式我看不太懂IMG_20221026_090956.jpg(52.86 KB)

如上图,我输出所有数组能得到下图这样,当然加了个nl命令
(38.08 KB)

但是当我单拧出来一个数组,那么结尾就会有一个换行🤣🤣

IMG_20221026_092008.jpg(73.62 KB)
IMG_20221026_092036.jpg(40.66 KB)
庸人 9楼回复 庸人大佬萌们,如何从JQ中取出数组赋值给变量 (2022-10-25//)
@无名啊,没呢我闲着写的,用的git上的网易云音乐api,想写个实现本地化命令行的一些操作,读取本地json是不想一直都向api请求。哈哈🤣🤣
无名啊 8楼回复 庸人大佬萌们,如何从JQ中取出数组赋值给变量 (2022-10-25//)

@庸人,你的需求是要备份当下的网易云歌单吗?还是啥。。

庸人 7楼回复 庸人大佬萌们,如何从JQ中取出数组赋值给变量 (2022-10-25//)
@无名啊,其实就是将name→歌曲名和id又歌曲id放进两个数组变量里🤣。
因为我看jq就是按行输出的,所以想到有没有办法直接放进数组里而不用再去循环遍历一次。后面要用了就直接调用数组了
无名啊 6楼回复 庸人大佬萌们,如何从JQ中取出数组赋值给变量 (2022-10-25//)

@庸人,你说下原始需求,感觉会有更好的实现方式

庸人 5楼回复 庸人大佬萌们,如何从JQ中取出数组赋值给变量 (2022-10-25//)
@无名啊,感谢大佬么么,其实我用的就是bash,,只是很不熟,太菜了之前看到过这个不过我在termux终端测试输入没有高亮我以为不支持🤣🤣
无名啊 4楼回复 庸人大佬萌们,如何从JQ中取出数组赋值给变量 (2022-10-25//)

@庸人,比如:

$ readarray -td $'\0' arr < <(jq -rj '[.[].name] | join("\u0000")' <<<'[{"id": 1, "name": "a\nb\n"}, {"id": 2, "name": "c\nd"}]')
$ declare -p arr
declare -a arr=([0]=$'a\nb\n' [1]=$'c\nd')

如果你不担心你的 name 里有换行符的话,可以直接:

$ readarray -t arr < <(jq -r '.[].name' <<<'[{"id": 1, "name": "ab"}, {"id": 2, "name": "cd"}]')
$ declare -p arr
declare -a arr=([0]='ab' [1]='cd')
无名啊 3楼回复 庸人大佬萌们,如何从JQ中取出数组赋值给变量 (2022-10-25//)

@庸人,直接回答:可以用 Bashreadarray 来一次性读到某个数组

另外:

  1. Bash Shell 更适合交互式和简单脚本使用。含有数组、字典甚至更复杂数据结构的,可能都值得你考虑换其他语言了
  2. 不想换的话,考虑尽量用 jq 来一次性生成你最终要的数据?
庸人 2楼回复 庸人大佬萌们,如何从JQ中取出数组赋值给变量 (2022-10-25//)
@无名啊,格式就是这样(图下),我主要取出元素playlist下面的所有name元素数组(.playlist[].name),然后有没有办法直接将其结果赋给脚本内变量数组(不想每次都调用),我下图用的循环取出方法,有没有更简单的
Screenshot_2022-10-25-20-08-20-146_bin.mt.plus.jpg(562.67 KB)Screenshot_2022-10-25-19-59-39-914_bin.mt.plus.jpg(535.46 KB)
下一页 上一页 (253 / 512页)

12月3日 07:47 星期二

本站由hu60wap6华为CPU驱动

备案号: 京ICP备18041936号-1