距离上一次在 V 站发的贴子,已过去将近三年,后端成了老后端,开发的纯前端项目 tableconvert.com 还在继续维护,并且新增了一些花里胡哨的功能。
作为一个后端程序员,有不少处理数据的小需求,比如:
SELECT ... WHERE in (xxx)
SQL ;UPDATE
SQL;MySQL
命令行里的查询结果转换成 CSV 、Excel 、JSON 或 Markdown 表格等等实现这些需求的方式多种多样,可以用命令、脚本或正则替换,程序员肯定不会一条条手敲。我把这些需求塞到了表格转换工具的 Magic 转换器
,我几乎每天都会用到它,这也是持续维护它的原因。
Magic 转换器传送门: https://tableconvert.com/excel-to-magic
TableConvert 表格转换工具一共有 28 种转换器,Magic 转换器是其中之一,也是我最常用的转换器,它内置了像 awk
命令一样的指令,用户可以根据这些指令设计自己期望的规则数据。Magic 转换器支持的语法指令有:
语法指令 | 描述 | 支持哪些 JS 方法 |
---|---|---|
{h1} {h2} ... | 1th, 2th ... field of heading, Aka {hA} {hB} ... | String methods |
{$1} {$2} ... | 1th, 2th ... field of current row, Aka {$A} {$B} ... | String methods |
{F,} {F;} | Split the current row by the string after F | |
{NR} {NR+100} | Line Number of current Row from 1 or 100 | |
{ENR} | End line Number of Rows | |
{$0} | All Fields of current row | Array methods |
{NF} | Number of Fields | |
{x ...} | Execute JavaScript code, eg: {x new Date()} | |
{...\} | Use backslash \ to output braces {...} |
Row Magic:
"{$1}"{x if(NR<ENR)", "}
生成效果:
"Markdown", "Magic", "LaTeX", "SQL", "HTML", "CSV", "Excel", "JSON", "JSONLines", "ASCII", "MediaWiki", "AsciiDoc", "Qlik", "DAX", "Firebase", "YAML", "XML", "Jira", "Textile", "reStructuredText", "PHP", "Ruby", "ASP", "ActionScript", "TracWiki", "BBCode", "PDF", "JPEG"
Row Magic:
UPDATE user set name ='{$2}' WHERE id='{$1}';`
生成效果:
UPDATE user set name ='Roberta' WHERE id='1';
UPDATE user set name ='Oliver' WHERE id='2';
UPDATE user set name ='Shayna' WHERE id='3';
...
Row Magic:
echo "title: File {$2}
date: {x new Date().getTime()}
" > docs/{$2}.md
生成效果:
echo "title: File name
date: 1673493211739
" > docs/name.md
echo "title: File Roberta
date: 1673493211739
" > docs/Roberta.md
...
Row Magic:
mv {$2} {$2.replace('e', 'E')}-generator.json`
生成效果:
mv name namE-generator.json
mv Roberta RobErta-generator.json
mv Oliver OlivEr-generator.json
...
还能玩儿出什么花来?篇幅有限,就不一一列举了。V 友有常用的 Magic 模板,可以在评论区留言,我会它按使用频率整理并添加到 Built-in Magic 中。
公司要倒闭了,没啥事儿,这次有时间对 Magic 转换区进行升级,分享给大家,各位轻喷,谢谢!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.