来谈谈关于Shell中效率的问题

今天没什么事就总结一下Shell中很多操作关于效率的问题
不说别的没有用的
就是来点干的
最开始那自然就是算数运算
这里我最推荐的就是用$(()) 这样的方法进行简单的运算
因为无论是expr 还是bc之类的计算器肯定都没有linux的内置的快
总结起来也就是一句话
那就是能用内置的变量就不要用外部命令
然后就是有关于变量截取的问题
比如一般的变量都可以用sed来搞定
但是的吧,sed说实话效率真不是很高,有时候等一个文件输出
要等很久
可以用 ${  }中的一些内置的变量截取
当然如果就几十个文件搞的话没那么费劲
随意、会用哪个用哪个。
但是当你处理好几千个好几万数据的话,那个时间就不是盖的了
也不用就完全的都整的特别明白
知道什么时候用得着可以查的到就可以了
比如百度什么关键词就能找到对应的解决办法
还有就是能用工具搞定的东西,不用非得自己写一个脚本去处理
毕竟工具经历了这么多年的洗礼
不好用的工具肯定就被淘汰了
还有挺重要的就是嵌套循环、我只想说
除非数据非常少
不然你就等吧
能处理数据就处理数据
一次只干成一件事
比如今天有人问一个问题
就是有一个200G的文本文件
想要打印出大概两千行的内容
两千行的行号在一个文本文件里
他给出的解法是用for循环那个行号文件,然后用sed来取
我就简单的估计了一下,这JB不扯淡呢吗
for循环的话、得循环2000多遍,然后sed是遍历那200G的文件
我给了一个解法、但是比较复杂,接下来我就说一下我的方法
仅仅提供参考,肯定有比我更好的解法

首先就是sed不能分行过滤,因为那2000行是不连续的,sed我搞不定
也许哪个sed大神说可以搞定,我办不到,我给出一个大众的解法
我用的就是awk,awk的话 关键的用法就是这个
awk ‘/{if(NR==LINE)print}/’ file
就是用NR来判断行号,那么只需要遍历一遍文件就可以
重要的就是把NR==LINE的问题搞定就可以了
因为awk支持 (NR==23||NR==25)
像这样的,它可以多选
那么把那个行号文件用tr和sed处理过后就能整出来()中间的那种类型的一行文本
直接复制过去给awk就哦了
我做过实验,肯定搞得定,我已经搞定了
不过代码那阵关机以后就在历史记录里了
我也懒的翻了

就总结这么多了,不多说了,准备洗洗睡了

时间: 2024-08-28 22:56:08

来谈谈关于Shell中效率的问题的相关文章

Linux CentOS 7 shell中的特殊字符及与管道相关的命令(cut,sort,wc,uniq,tee,tr,split)

一. shell特殊符号cut命令 1.特殊符号 * :任意个任意字符 ? :任意单个字符# :注释\ :转义字符 | :管道符 2.几个和管道相关的命令 (1) cut cut 把文件分段 cat /etc/passwd cut -d: -f 3  /etc/passwd    cut -d: -f 3,6,5  /etc/passwd cut -d: -f 3-6  /etc/passwd cut -c 10 /etc/passwd   取第十个字符 cut -c 5-10 /etc/pas

shell 中的特殊符号的含义

来源:http://blog.sina.com.cn/s/blog_62a151be0100x9rn.html 第四章 基本功 - 特殊符号 学习撰写 script 最迅速的捷径是观摩别人的 script 档案.不过,此法儘管实际,但这对于 shell 基础认知不足的人来说,通常都得到"事倍功半",甚至半途而废.通常第一个问题就是搞不懂那些"特殊符号"到底在代表什么意义,又到底她们干了些什么? 以下,农夫尝试列出常用的特殊符号表列,并在说明中加入简短的范例.原则上,

shell中的特殊符号总结

在shell中常用的特殊符号罗列如下: # ;   ;; . , / \\ 'string'| !   $   ${}   $? $$   $* \"string\"* **   ? : ^ $#   [email protected] `command`{}   [] [[]] ()   (()) ||   && {xx,yy,zz,...}~   ~+   ~-   &   \\<...\\>   + - %=   ==   != # 井号 (c

Linux Shell中的特殊符号和含义简明总结(包含了绝大部份)

case语句适用于需要进行多重分支的应用情况. case分支语句的格式如下: case $变量名 in 模式1) 命令序列1 ;; 模式2) 命令序列2        ;; *) 默认执行的命令序列     ;; esac Linux Shell中的特殊符号和含义简明总结(包含了绝大部份)_linux shell_脚本之家 在Linux Shell中有很多的特殊符号,这对于我们写Shell脚本时要特别留意:一方面要知道这些特殊符号的用法,这些符号用好了可以达到事半功倍的效果:但另一方面要避免这些

谈谈运行稳定性好效率高的千万级大型网站系统架构性分析

千万级的注册用户,千万级的帖子,nTB级的附件,还有巨大的日访问量,大型网站采用什么系统架构保证性能和稳定性? 首先讨论一下大型网站需要注意和考虑的问题. 数据库海量数据处理:负载量不大的情况下select.delete和update是响应很迅速的,最多加几个索引就可以搞定,但千万级的注册用户和一个设计不好的多对多关系将带来非常严重的性能问题.另外在高UPDATE的情况下,更新一个聚焦索引的时间基本上是不可忍受的.索引和更新是一对天生的冤家. 高并发死锁:平时我们感觉不到,但数据库死锁在高并发的

常见Linux Shell中的特殊符号含义

在Shell的实际使用中,有编程经验的很容易上手,但稍微有难度的是shell里面的那些个符号,各种特殊的符号在我们编写Shell脚本的时候如果能够用的好,往往能给我们起到事半功倍的效果,下面就罗列一些常见的特殊符号. # 井号 如#!/bin/bash井号也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文字,不会被执行.# This line is comments.echo "a = $a" # a = 0由于这个特性,当临时不想执行某行指令时,只需在该行开头

shell中控制多个进程并发执行的方法

shell中实现多进程实际上就是将多个任务放到后台中执行而已,但是现在需要控制多进程并发的数量该如何实现呢?别急,我们一步一步来实现这个目标,首先从最原始的串行执行开始: #!/bin/bash start=`date +%s` for i in $(seq 1 5); do echo test sleep 2 done end=`date +%s` time=$(($end - $start)) echo "time: $time" 执行结果: # sh test1.sh test

linux在shell中获取时间

获得当天的日期 date +%Y-%m-%d 输出: 2011-07-28 将当前日期赋值给DATE变量DATE=$(date +%Y%m%d) 有时候我们需要使用今天之前或者往后的日期,这时可以使用date的 -d参数 获取明天的日期 date -d next-day +%Y%m%d 获取昨天的日期 date -d last-day +%Y%m%d 获取上个月的年和月 date -d last-month +%Y%m 获取下个月的年和月date -d next-month +%Y%m 获取明年

在 shell 中使用 vi 模式

作为一名大型开源社区的参与者,更确切地说,作为 Fedora 项目的成员,我有机会与许多人会面并讨论各种有趣的技术主题. 我最喜欢的主题是"命令行"或者说 shell,因为了解人们如何熟练使用 shell 可以让你深入地了解他们的想法,他们喜欢什么样的工作流程,以及某种程度上是什么激发了他们的灵感. 许多开发和运维人员在互联网上公开分享他们的" dot 文件"(他们的 shell 配置文件的常见俚语),这将是一个有趣的协作机会,让每个人都能从对命令行有丰富经验的人中