2022-10-05 nushell版本=v0.69.1
Nushell powershell awk 对比 第二集 博客园
1 nushell是mit协议的,rust开发的,【单文件程序!!!】,所以nushell的安装真香!
2 从这点上来看awk完败。Awk文件太多不绿色。Awk就占个内置的先机。
3 powershell是绿色软件,从github下载后,解压便可执行,但它是单目录中,有多个文件和子目录。这比awk安装在多个不同的子目录要好。我还为大家做了linux一键安装powershell的脚本。
安装脚本在码云,Linux下一键安装powershell:
https://gitee.com/chuanjiao10/kasini3000_agent_linux
结论:nushell和powershell都是绿色linux软件。
1 nushell
关于nushell的扩展性,目前我还是不看好。和powershell对比还是不行。
不建议powershell人学习nushell,因为学了之后,你会从西施变成东施。Nushell中没有对象,也就没有属性,方法。但有模仿的似是而非的东西,而且模仿的痕迹还特别大。比如:
Powershell:
‘abc’.toupper()
Nutshell:
‘abc’ | str upcase
Ls | where size > 5mb | sort-by name
关于nushell的适用场景:
awk最大的竞争对手,敌人,就是nushell。它可以代替awk,sed,可以支持表,json,xml,bson,sqlite等,支持多线程并发,支持特别老的linux,和unix。它们的战场(对比场景),就是常见的【linux本地不规范数据处理】。
世界上90%的人,都用linux的默认shell,如bash,ash等。只有不到5%的linux人把默认shell替换成了powershell。用nushell当默认shell的人就更少了。也就是说,几乎没人拿nushell当shell用,而拿nushell当awk用。用nushell来处理数据,扣取字串,分行分列,发送接收json等。
2 powershell:Win,linux中,最强大的还属powershell。
Powershell的强大,主要通过4点:
Powershell和Kasini3000中有个功能,就是基于powershell的new-psssession的双向远程传对象。请看:
$时间对象_从被控机传到主控机 = k_run_ip -ip 被控机ip地址 {get-date}
$时间对象_从被控机传到主控机.addday(3) #被控机时间 + 3天
powershell管道传对象被你nushell无情地山z寨了。我想看看powershell的远程传对象,你怎么山z寨。
关于官方的,把nushell看成编译脚本:
这一个特性真的不好。Powershell没有这个特性。
nushell第一集中的问题:可以定义带有点的变量,却无法使用,什么鬼?如:let a.a = 1 ,用$a.a ${a.a} 不能输出。------已经修复,现在不能定义上述变量。
nushell第一集中的问题:在win的nushell中,的文件名补全。可以补全目录名(支持),目录中的文件名,有时候不能自动补全。文件名补全,打一个字母后,不能补全,这个应该是个bug。------已经修复
nutshell中,这一个特性很好:
let if = 1 ,let 1 = ‘a’ ,都可以定义。并使用$if,$1。这和powershell相同。Python中不允许这么用,而脚本人喜欢用 $1 , $2。
nushell第2集发现的新问题:
管道可以和powershell联用,但有问题:
pwsh.exe -c "echo a" | str upcase
A
----上述好多空格
echo 'a' | str upcase
A ----正常
ls | autoview ---不灵了,应该是autoview命令删除了
$it ---不灵了,没了。
这个命令可以:
'aaa 分割符 bbb' | parse '{a1} 分割符 {a2}' | get a1
这个命令不行:让我感到难受
'aaa 分割符 bbb' | parse '{1} 分割符 {2}' | get 1 #不行
'aaa 分割符 bbb' | parse '{$1} 分割符 {$2}' | get $1 #不行
结论:
Python败在没有shell级别的命令行,py脚本内支持管道很麻烦。不建议使用。
而powershell是最简单,功能最强的。它语法和shell 95%相同。库随不如py强,但对脚本,运维人员来讲人足够了。
awk是一个传统的【字符串级别】shell语言工具。Awk是shell的架海紫金梁。既然是【字符串级别】工具,那就免不了依赖正则。
nushell是一个【半面向对象级别】的shell工具。是通天灵宝的仿a制b品(寨c版)。Nushell通过伪对象,伪属性,伪方法来实现功能。nushell有管道,而python可以看做没有管道。它支持sql库=sqlite,nosql库=bson,用起来比py简单,它支持linux外部命令。Nushell是单文件绿色软件,这点让它真香!nushell目前最大的对手是awk。但nushell扩展性不如powershell,python。
Shell工具本来是小众软件。前有【饭醉团dd伙3人组awk-sed-grep】,后有强大的【powershell抽喝烫】。nushell浑身都是假%z货(伪对象,伪属性,伪方法),nushell能杀出重围吗?敬请期待第3集。
欢迎awk支持者,参与讨论。意见不同也很正常。
Shell用户受困于awk,这导致excel文件=库,mysql库,sqlite库,bson=nosql库,不能方便地被shell用户使用。Awk和txt又不方便多核cpu。而nushell的出现,部分解决了这种问题。
对比nushell和powershell(第一集)
https://www.cnblogs.com/piapia/p/15016149.html
有没有办法跳过CSV文件的第一行,让第二行作为标题?我有一个CSV文件,第一行是日期,第二行是标题,所以我需要能够在遍历它时跳过第一行。我尝试使用slice但它会将CSV转换为数组,我真的很想将其读取为CSV,以便我可以利用header。 最佳答案 根据您的数据,您可以使用另一种方法和skip_lines-option此示例跳过所有以#开头的行require'csv'CSV.parse(DATA.read,:col_sep=>';',:headers=>true,:skip_lines=>/^#/#Markcomments!)do|
LL库和HAL库简介LL:Low-Layer,底层库HAL:HardwareAbstractionLayer,硬件抽象层库LL库和hal库对比,很精简,这实际上是一个精简的库。LL库的配置选择如下:在STM32CUBEMX中,点击菜单的“ProjectManager”–>“AdvancedSettings”,在下面的界面中选择“AdvancedSettings”,然后在每个模块后面选择使用的库总结:1、如果使用的MCU是小容量的,那么STM32CubeLL将是最佳选择;2、如果结合可移植性和优化,使用STM32CubeHAL并使用特定的优化实现替换一些调用,可保持最大的可移植性。另外HAL和L
使用method_missing时在Ruby中,它是almostalwaysagoodidea定义respond_to_missing?respond_to_missing?接受两个参数;我们正在检查的方法的名称(symbol),以及一个指示我们是否应该在检查中包含私有(private)方法的bool值(include_all)。现在我感到困惑的是:method_missing不接受任何可能指示它是否应该调用私有(private)方法的参数,如respond_to_missing?做。此外,method_missing无论原始方法调用是在公共(public)上下文还是私有(privat
我正在对用户的提要进行分页,并想模拟我正在使用的API的响应。API可以返回奇怪的结果,所以我想确保如果API返回我已经看到的项目,请停止分页。我使用minitest在第一次调用方法get_next_page时stub,但我想在第二次和第三次用不同的值调用它时stub。我应该只使用rSpec吗?ruby新手...这是片段test"crawlerdoesnotpaginateifnonewitemsinnextpage"do#1:A,B#2:B,D=>D#3:A=>stopcrawler=CrawlJob.newfirst_page=[{"id"=>"item-A"},{"id"=>"i
我似乎找不到一种优雅的方式来做到这一点......给定一个日期,我如何找到下一个星期二,即日历月的第2个或第4个星期二?例如:给定2012-10-19然后返回2012-10-23或给定2012-10-31然后返回2012-11-13OctoberNovemberSuMoTuWeThFrSaSuMoTuWeThFrSa12345612378910111213456789101415161718192011121314151617212223242526271819202122232428293031252627282930 最佳答案
以下代码使用了触发器运算符。(1..10).each{|x|print"#{x},"ifx==3..x==5}为什么结果是3,4,5?我觉得应该是3,4。如教程中所述,此表达式在x==3时为真,并一直为真,直到x==5。如果“5”的计算结果为false,如何打印它?谁能为我澄清一下? 最佳答案 来自“TheRubyProgrammingLanguage”的重要链接是:4.6.9.1Booleanflip-flopsWhenthe..and...operatorsareusedinaconditional,suchasanifstat
这个问题在这里已经有了答案:HowtoreturnapartofanarrayinRuby?(6个答案)关闭8年前。我的方法:defscroll_imagesimages_all[1..images_all.length]end我不喜欢调用images_all两次,只是想知道是否有一个好的技巧来调用self或类似的东西来使它更干净一些。
假设我有一个这样的数组:["auburn","http://auburn.craigslist.org/web/","http://auburn.craigslist.org/cpg/","http://auburn.craigslist.org/eng/","http://auburn.craigslist.org/sof/","http://auburn.craigslist.org/sad/"]我想做的是只处理这个数组中的URL——它总是从element[1]开始并向上。我该怎么做? 最佳答案 这里只显示从1(第二个元素)开始
首先,DateTime格式变量似乎没有在任何地方记录,因此对可以在rubydocs中向我展示此内容的任何人+1。其次,在查看Date.strftime函数代码时,我没有看到任何可以让我执行以下操作的内容:2010年9月9日,星期四有人知道这是否可行吗? 最佳答案 您可能想要takealookhere.总结time=DateTime.nowtime.strftime("%A,%B#{time.day.ordinalize}%Y")请注意,您在纯Ruby(2.0)中运行,您需要调用:require'active_support/core
如何从第二次出现的字符拆分字符串str="20050451100_9253629709-2-2"Ineedtheoutput["20110504151100_9253629709-2","2"] 最佳答案 没有什么比得上单线了:)str.reverse.split('-',2).collect(&:reverse).reverse它将反转字符串,用“-”分割一次,从而返回2个元素(第一个“-”前面的内容和它后面的所有内容),然后反转两个元素,然后反转数组本身。编辑*before,after=str.split('-')puts[be