涨工资,首先要提速,Linux shell的12个巧妙技巧让你运维高效
人们常常行使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 '呼吁读取文件。那么谁将赢得这场案子呢? (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |