Shell脚本(1)——为什么sh脚本有用

wils
wils

创作者俱乐部成员

  1. 跑的快,写的短:当需要处理超过百万行的csv文件时,很多朋友推荐用数据库,但其实直接处理csv这个文本文件也可以很快,如图:

🔔

time命令,统计执行后面的命令用了多久。

seq命令,类似wps里的sequence公式,生成序列,图中分别生成了1到500万的,每行一个数的a.csv,200万到700万的b.csv,生成的耗时在0.2秒左右

grep命令,类似vlookup公式,从b.csv里找出所有匹配a.csv的行,输出到c.csv,耗时2秒左右

wc命令,统计文本里有多少行、多少词、多少字,这里输出c.csv里共匹配了300万零一行

小结一下,大多shell命令是从1970年代更新至今,稳定和速度都可以信赖,比如仅用grep这一个命令,也可以通过正则、整行、单词等匹配方式,进行百万行里找百万行数据,耗时仅为几秒

  1. 跨平台:最近,需要在国产Linux系统里,操作表格外部数据的人越来越多了。Linux里可以直接执行shell脚本;windows里只需下载busybox-w32.exe这个500k的文件,之后就可以执行shell脚本

简单来说,linux里的sh脚本只需添加一行注释,即可在windows里当成bat批处理运行

  1. 扩展WPS:wps里的js宏相比vba宏,目前欠缺的就是对外部数据的处理。

📌

比如vba里可以通过com对象操作pdf、连接数据库、发邮件、操作文件

而js宏里,无论wpsjs加载项、xll加载项、nativex接口,甚至js宏里的lineinput、put、open、dir方法,都还不完善或是极度缺少文档,用起来一点也不稳定

目前在windows和linux里都比较稳定的对外操作接口,似乎只剩下js宏里的fetch网络请求,这其实也是最成熟最安全的对外交互接口,这样的话,无论linux还是windows,只需要执行busybox里的httpd命令就可以开启一个js宏可以访问的接口,具体的功能,只需要新建cgi-bin文件夹,在里面写shell脚本即可随意操作外部数据

从这里也可以看到shell脚本可以把wps的js宏扩展到操作全部的外部数据,而无论win还是linux,这是非常简单、快速、高可扩展的工具

  1. 易学:大多命令其实都能从WPS公式里找到影子(当然这些命令出现在1970年代)

基础的命令可以从这里学习https://wiki.archlinux.org/title/Core_utilities

或者windows里学会busybox-w32里的个别命令也已经够用

之后会发一些帖子,介绍Shell脚本在处理表格中最常用的一些命令,为大家处理百万行数据时,除了转数据库,提供另外一条简单快速的路

ps. 其实wps的js宏里的shell大概也是执行shell脚本的意思,只是需要弄个环境😁

海南省
浏览 601
收藏
7
分享
7 +1
4
+1
全部评论 4
 
李强
打卡!
· 山西省
回复
 
那谁谁ృ༊゜
打卡
· 广东省
回复
 
yi
yi

创作者俱乐部成员

大佬
· 江西省
回复
 
HC.旋
触类旁通,技巧相似,学习了
· 江苏省
回复