老李分享:《Linux Shell脚本攻略》 要点(二)
老李分享:《Linux Shell脚本攻略》 要点(二)
poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标。如果对课程感兴趣,请大家咨询qq:908821478。Linuxshell是测试开发工程师的基本功之一,所以在poptest测试开发课堂上加入了大量的linuxshell的课程,为了学员开发跨平台的测试平台打基础。
1、cat
cat -s //多个空白行压缩成一个
cat *.txt | tr -s '\n' //移除空白行
cat -n //加行号
2、find
沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作。
eg:
find ./ ! -name "*.txt" -print
[root@localhost program_test]# find ./ -type f -name "*.swp" -delete
3、xargs 将标准输入数据转换成命令行参数。
[root@localhost program_test]# cat out.txt | xargs //将单行转化为多行
[root@localhost program_test]# cat out.txt | xargs -n 3 //将单行转化为多行,每行的个数为3.
//统计.c和.cpp的文件的代码行数. xargs -0 将'\0'作为定界符.
[root@localhost program_test]# find . -type f -name "*.c*" -print0 | xargs -0 wc -l
10 ./main/cos_value.c
10 ./main/sin_value.c
5 ./main/haha.c
15 ./main/main.c
8 ./hello.cpp
8 ./sin.c
32 ./review2.cpp
24 ./review5.cpp
7 ./hello.c
119 total
4.tr命令(translate的简写) 可对来自标准输入的字符进行替换、删除及压缩。
即:将一组字符变为另一组字符。
1)替换
echo “HELLO” | tr [A-Z] [a-z]
2)删除
[root@localhost program_test]# echo "hello 123 world 456" | tr -d '0-9'
hello world
3)压缩字符
[root@localhost program_test]# echo "GNU is not UNIX" | tr -s ' '
GNU is not UNIX
//综合举例
[root@localhost program_test]# cat sum.txt
1
2
3
4
5
[root@localhost program_test]# cat sum.txt | echo $[ $(tr '\n' '+') 0 ]
15
5、md5校验
[root@localhost program_test]# md5sum out.txt > out.txt.md5
[root@localhost program_test]# cat out.txt.md5
fd46d559bf0c90170fef3da3c3de4c67 out.txt
//eg:
[root@localhost program_test]# find ./ -type f -name "*.txt" -print0 | xargs -0 md5sum >> curr_dir.md5
46e17910faf509df48dbfba9729ef018 ./banana.txt
c1dbbf63209a5580c052dc557510e7fb ./11.txt
a80ddf02fa3a86c14066204e4bf2dbb9 ./multiline.txt
[root@localhost program_test]# md5sum -c curr_dir.md5
./banana.txt: OK
./11.txt: OK
./multiline.txt: OK
6、sort排序
//sort 按第2列排序
[root@localhost program_test]# sort -k 2 sort.txt
4 bad 5000
3 linux 50
1 mac 2000
2 winxp 100
//sort 逆序排序
[root@localhost program_test]# sort -r sort.txt
4 bad 5000
3 linux 50
2 winxp 100
1 mac 2000
//综合举例:统计字符串中每个字符出现的次数
[root@localhost program_test]# ./total_cnts.sh
AHEBHAAA
4A1B1E2H
[root@localhost program_test]# cat total_cnts.sh
INPUT="AHEBHAAA"
output=$(echo $INPUT | sed 's/[^.]/&\n/g' | sed '/^$/d' | sort | uniq -c | tr -d ' \n')
echo $INPUT
echo $output
[释义]: sed 's/[^.]/&\n/g' //任意一个字符后面都加上\n
拆分如下:
[root@localhost program_test]# input="ahebhaaa"
[root@localhost program_test]# echo $input | sed 's/[^.]/&\n/g'
a
h
e
b
h
a
a
a
sed '/^$/d' //删除空行
uniq -c //统计各行文本出现的次数.
tr -d '\n ' //删除换行符以及空格字符
7、临时文件命名
[root@localhost program_test]# temp_file="/tmp/var.$$"
[root@localhost program_test]# echo $temp_file
/tmp/var.16565
老李分享:《Linux Shell脚本攻略》 要点(二)的更多相关文章
- 老李分享:《Linux Shell脚本攻略》 要点(八)
老李分享:<Linux Shell脚本攻略> 要点(八) 1.打印进程 [root@localhost program_test]# ps -e | head PID TTY ...
- 老李分享:《Linux Shell脚本攻略》 要点(七)
老李分享:<Linux Shell脚本攻略> 要点(七) 1.显示给定文件夹下的文件的磁盘适用情况 [root@localhost program_test]# du -a -h ./ ...
- 老李分享:《Linux Shell脚本攻略》 要点(六)
老李分享:<Linux Shell脚本攻略> 要点(六) 1.打印网络接口列表 [root@localhost touch_more]# ifconfig | cut -c-10 | ...
- 老李分享:《Linux Shell脚本攻略》 要点(五)
老李分享:<Linux Shell脚本攻略> 要点(五) //1.打包.解包 [root@localhost program_test]# tar -cf output.tar 11. ...
- 老李分享:《Linux Shell脚本攻略》 要点(四)
老李分享:<Linux Shell脚本攻略> 要点(四) 1.IP地址的正则表达式: [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} 2. ...
- 老李分享:《Linux Shell脚本攻略》 要点(三)
老李分享:<Linux Shell脚本攻略> 要点(三) 1.生产任意大小的文件 [root@localhost dd_test]#[root@localhost dd_test]# ...
- 老李分享:《Linux Shell脚本攻略》 要点(一)
老李分享:<Linux Shell脚本攻略> 要点(一) 第一章:Shell起步基础 1.变量:在bash中,每一个变量的值都是字符串.无论你给变量赋值时,有没有使用引号,值都会以字符 ...
- 读《Linux Shell脚本攻略》(第2版) 总结
前段时间读完了<Linux Shell脚本攻略>(第2版)这本书,给部分想读这本书的人分享下个人感受. 说下这本书的难度吧.纯新手或者只懂少部分编程知识的人,读起来还是有很大难度的.以我为 ...
- 读《Linux Shell脚本攻略》(第2版) 一遍、二遍体会
前段时间读完了<Linux Shell脚本攻略>(第2版)这本书,给部分想读这本书的人分享下个人感受. 第一遍体会解读:就像黑夜中的灯塔,指明前进的道路. 推荐指数:强烈推荐. 书中讲解的 ...
随机推荐
- 不惧面试:HTTP协议(3) - Cookie
v博客前言 先交代下背景,写这个系列的原因是总结自己遇到的面试题以及可能遇到的题目,更重要的是,今年定的目标是掌握网络这一块的知识点,先是搞懂HTTP协议,然后是TCP/IP协议,再就是WCF如何运用 ...
- BZOJ 1835: [ZJOI2010]base 基站选址(DP,线段树)
可以很容易的写出dp方程: F[i][j]=min(F[l][j-1]+w[l][i])+c[i] (w[i][j]是从l+1到i-1这些点p里,所有满足d[p]+s[p]<d[i] & ...
- Javascript几种跨域方式总结
在客户端编程语言中如javascript,同源策略规定跨域之间的脚本是隔离的,一个域的脚本不能访问和操作另外一个域的绝大部分属性和方法.只有当两个域具有相同的协议,相同的主机,相同的端口时,我们就认定 ...
- 禁止Linux系统被 ping
echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf sysctl -p 生效 开启ping功能: 删除 ...
- solr6.4.1搜索引擎同步mysql数据库
尚未成功启动solr的,请参考我的另一篇文章:http://www.cnblogs.com/zhuwenjoyce/p/6506359.html(solr6.4.1 搜索引擎启动eclipse启动) ...
- 类比Spring框架来实现OC中的依赖注入
如果你之前使用过JavaEE开发中的Spring框架的话,那么你一定对依赖注入并不陌生.依赖注入(DI: Dependency Injection)是控制反转(IoC: Inversion of Co ...
- Android学习总结(十二)———— BaseAdapter优化
一.BaseAdapter的基本概念 对于Android程序员来说,BaseAdapter肯定不会陌生,灵活而优雅是BaseAdapter最大的特点.开发者可以通过构造BaseAdapter并搭载到L ...
- 关于利用input的file属性在页面添加图片的问题
在页面添加图片涉及到兼容的问题怎么解决兼容问题呢?请看下面分析: 在IE浏览器上面我们能直接通过获取其input的value值来获取其图片的路径. 在火狐和谷歌需要用createObjectURL(( ...
- 九度OJ题目1080:进制转换(java)使用BigInteger进行进制转换
题目描述: 将M进制的数X转换为N进制的数输出. 输入: 输入的第一行包括两个整数:M和N(2<=M,N<=36). 下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成 ...
- nodejs的简单爬虫
闲聊 好久没写博客了,前几天小颖在朋友的博客里看到了用nodejs的简单爬虫.所以小颖就自己试着做了个爬博客园数据的demo.嘻嘻...... 小颖最近养了条泰日天,自从养了我家 ...