加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 正文

涨工资,首先要提速,Linux shell的12个巧妙技巧让你运维高效

发布时间:2021-05-28 00:31:22 所属栏目:创业 来源:互联网
导读:人们常常行使 cut 乃至 awk 只是通过模式或行使脱离符减去字符串的一部门。 其它,很多人行使 $ {VARIABLE:start_position:length} 举办子字符串bash操纵,这

人们常常行使cut乃至awk只是通过模式或行使脱离符减去字符串的一部门。

其它,很多人行使$ {VARIABLE:start_position:length}举办子字符串bash操纵,这很是快。

可是bash提供了一种行使#,##,%和%%来处理赏罚文本字符串的强概略领-它称为bash变量扩展。

行使此语法,您可以在无需执行外部呼吁的环境下镌汰模式的必要,因此它将很是快速地事变。

下面的示例表现了怎样行使cut或变量扩展从字符串中获取第三列(shell),其顶用冒号«username:homedir:shell»脱离的值(我们行使*: mask和##呼吁,这意味着:将全部字符向左剪切,直到找到最后一个冒号为止):

$ STRING="username:homedir:shell" 

$ echo "$STRING"|cut -d ":" -f 3 

shell 

$ echo "${STRING##*:}" 

shell 

第二个选项不启动子历程(cut),而且基础不行使管道,这样可以更快地事变。并且,假如您在管道险些不移动的Windows上行使bash子体系,则速率差别会很大。

让我们看一下Ubuntu上的示例:轮回执行我们的呼吁1000次

$ cat test.sh 

#!/usr/bin/env bash 

STRING="Name:Date:Shell" 

echo "using cut" 

time for A in {1..1000} 

do 

 cut -d ":" -f 3 > /dev/null <<<"$STRING" 

done 

echo "using ##" 

time for A in {1..1000} 

do 

 echo "${STRING##*:}" > /dev/null 

done 

功效

$ ./test.sh 

using cut 

real 0m0.950s 

user 0m0.012s 

sys 0m0.232s 

using ## 

real 0m0.011s 

user 0m0.008s 

sys 0m0.004s 

不同是几十倍!

虽然,上面的例子太工钱了。在现实示例中,我们将不行使静态字符串,而是要读取真实文件。对付“ cut ”呼吁,我们只将/etc /passwd重定向到它。在##的环境下,我们必需建设一个轮回并行使内部的' read '呼吁读取文件。那么谁将赢得这场案子呢?

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读