小编Rah*_*hul的帖子

在 gzip 压缩文件中获取记录数(行)的最快和最有效的方法

我正在尝试对 7.6 GB 的 gzip 文件进行记录计数。我发现使用该zcat命令的方法很少。

$ zcat T.csv.gz | wc -l
423668947
Run Code Online (Sandbox Code Playgroud)

这有效,但需要太多时间(超过 10 分钟才能获得计数)。我尝试了更多的方法,比如

$ sed -n '$=' T.csv.gz
28173811
$ perl -lne 'END { print $. }' < T.csv.gz
28173811
$ awk 'END {print NR}' T.csv.gz
28173811
Run Code Online (Sandbox Code Playgroud)

所有这三个命令的执行速度都非常快,但给出的计数不正确,为 28173811。

如何在最短的时间内执行记录计数?

shell gzip

17
推荐指数
3
解决办法
2万
查看次数

如何将 JSON 的文件树结构转换为一行?

我有一个 JSON 文件如下

{
    "Foo": "ABC",
    "Bar": "20090101100000",
    "Quux": {
        "QuuxId": 1234,
        "QuuxName": "Sam"
    }
}
Run Code Online (Sandbox Code Playgroud)

我想把它转换成下面的

{"Foo":"ABC","Bar":"20090101100000","Quux":{"QuuxId":1234,"QuuxName":"Sam"}}
Run Code Online (Sandbox Code Playgroud)

我试图删除 '\n'、'\t' 和 ' ' 字符;但我没有得到所需的格式。我怎样才能转换它?

conversion json

7
推荐指数
1
解决办法
8187
查看次数

用于检查仅数字的正则表达式是否存在于下划线而非字符之后

我的 shell 脚本中有 if 循环,它将检查表名是否存在任何整数,这是我指定的条件:

if [[ "$able_name" == *[0-9]* ]] 
Run Code Online (Sandbox Code Playgroud)

一般来说,表名会是这样的:

tablename_000 
Run Code Online (Sandbox Code Playgroud)

或者

tablename_001 
Run Code Online (Sandbox Code Playgroud)

但是我有一个新文件,其名称类似于table_V2. 由于名称与正则表达式匹配,因此进入此循环。我怎样才能避免这种情况?if只有在下划线之后存在整数而不是任何其他字符时,它才应该进入循环。

shell wildcards

5
推荐指数
2
解决办法
3653
查看次数

标签 统计

shell ×2

conversion ×1

gzip ×1

json ×1

wildcards ×1