use*_*855 6 shell scripting perl
我知道这个问题非常主观.但我无法以更好的方式提出问题.我会很感激一些指导.
作为开发人员,我常常觉得如果我能够在日志文件,一组源文件或某些数据集等上执行一些相当复杂的任务,那么对我来说会有多么容易.
显然,当需要重复完成相同类型的任务并且速度至关重要时,我可以考虑用C++/Java编写它.
但大多数时候,这是某种文本处理或文件搜索活动,我只想做一次只是为了执行快速检查或做一些初步分析等.在这种情况下,我会更好地完成任务手动而不是用C++/Java编写.但是如果我知道像Bash/Python/Perl/Ruby/Sed/Awk这样的语言,我肯定可以在几秒钟内完成.
我知道这整个问题是主观的,没有客观明确的答案,但总的来说开发者社区整体上有什么感受?我应该知道这些语言的哪个子集,以便我可以轻松完成所有这些任务并提高我的工作效率.
Perl会是个不错的选择吗?
它是一个超级的Sed/Awk集合,它允许编写简洁的代码.我可以用更少的代码行完成.它既不可读也不易维护,但我从来不想要那些功能.困扰我的唯一事情就是Perl最近得到的负面宣传,并且受到Ruby/Python社区的批评很多.另外,我不确定它是否可以完全取代bash脚本.如果没有,那么Perl + Bash是否适合这类任务呢?
我倾向于做很多处理ruby
.它具有perl的所有功能,但我发现它更具可读性.无论perl
和ruby
支持-n
,-e
和-p
选项.
-e 'command' one line of script. Several -e's allowed. Omit [programfile]
-n assume 'while gets(); ... end' loop around your script
-p assume loop like -n but print line also like sed
Run Code Online (Sandbox Code Playgroud)
例如在红宝石中
seq 1 4 | ruby -ne 'BEGIN{ $product = 1 }; $product *= $_.to_i; END { puts $product }'
24
Run Code Online (Sandbox Code Playgroud)
这与perl非常相似
seq 1 4 | perl -ne 'BEGIN{ $product = 1 }; $product *= $_; END { print $product }'
24
Run Code Online (Sandbox Code Playgroud)
在Python中,同样如下所示:
seq 1 4 | python -c 'import sys; print reduce(lambda x,y : int(x)*int(y), sys.stdin.read().splitlines(True))'
24
Run Code Online (Sandbox Code Playgroud)
虽然可以在bash/awk/sed中执行上述操作,但您将受到缺乏更高级功能的限制.
归档时间: |
|
查看次数: |
3119 次 |
最近记录: |