我正在尝试对 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。
如何在最短的时间内执行记录计数?
我有一个 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' 和 ' ' 字符;但我没有得到所需的格式。我怎样才能转换它?
我的 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
只有在下划线之后存在整数而不是任何其他字符时,它才应该进入循环。