shell学习笔记二--工具
2009-10-10 23:47
309 查看
中经常用到的一些程序(也称命令、工具)。当然,其中会参插很多前面讲过的。
Shell、grep、re等。Re脚本解决问题就越容易!re/sed/awk一、[/b]cut[/b]
其中,chars个字符截取出来;用逗号分隔的数值列表,如-c1,13,50和50到50把data如果不指定file命令用作管道线中的过滤器。我们再看who意思是截取行中的第1到行尾的字符(登陆时间)。
-d[/b]当数据文件或命令的输出不像who该文件的第一个冒号之前的字符都是系统用户名,我们想要截取这些用户名应该怎么办呢?因为每个名字的长度都可能不一样,所以-c,命令格式变为:
cut –ddchar –ffields file
表示要从文件file指定字符是一样的(所以要从/etc/passwd过滤器tr其中from-chars中,它就被转换成to-chars文件中的小写m先截取第1和6字段,然后tr将所有小写字母转换为大写。
-s[/b]选项用来压缩to-chars将m和W替换成一个字符,所以第二行的WWW带-s文件每行的多个空格压缩为一个,这里from-chars是同样的效果,而且和sed均不改变源文件(只是对文件的一个拷贝进行处理)
-d[/b]任何列在from-chars文件中的所有空格,结果写入标准输出(屏幕)。该命令和sed ‘s/ //g’。
每个文件中符合模式pattern文件为例:
$cat /etc/passwd
mysql:x:501:501::/home/mysql:/bin/bash
www:x:48:48::/home/www:/bin/bash
ldap:x:55:55:LDAP User:/var/lib/ldap:/bin/false
test:x:502:502::/home/test:/bin/bash
stu1:x:503:503::/home/stu1:/bin/bash
$grep www /etc/passwd
www:x:48:48::/home/www:/bin/bash
$
。如果在给定的文件中没有符合该迷失的字符串,grep的内容如下:
$cat data
www in data
tom in data
jerry in data
$
两个文件中搜索www的行外,还显示了他们所在的文件名。
(www的介绍不在本文给出,请参考其他文章。
-v[/b]处理这个问题很容易:用-v的行:
$grep –v www /etc/passwd
mysql:x:501:501::/home/mysql:/bin/bash
ldap:x:55:55:LDAP User:/var/lib/ldap:/bin/false
test:x:502:502::/home/test:/bin/bash
stu1:x:503:503::/home/stu1:/bin/bash
选项[/b]
中没有包含www很方便的把每个文件显示为一行,我们可以在命令后面通过管道把输出输送给wc –l如果grep:www:x:48:48::/home/www:/bin/bash
的第2用于对指定的文件中的行进行排序,其基本格式为:
sort file(s)
有许多选项,可以让排序操作非常灵活。下面我们只介绍其中一部分选项。
-u[/b]命令,在输出结果中去除重复的行:
$sort names
Fred
Lucy
Tony
Tony
$sort –u names
Fred
Lucy
Tony
$
选项[/b]
选项[/b]
另一种方法是用-o该命令把对文件names不能成功,它将以破坏文件而告终。然而,采用-o确实蛮好的。
-n[/b]编码的顺序来进行排序的,如果要按照数学方式来排序,该怎么做呢?看下面的例子:
$cat data
1 11 www
-3 13 jerry
2 12 tom
$sort data
1 11 www
2 12 tom
-3 13 jerry
$sort –n data
-3 13 jerry
1 11 www
2 12 tom
跳过字段[/b]
代表跳过第一字段。注意,不是所有的sort版本有关。
$sort +1n data
sort: open failed: +1n: No such file or directory
如果想要以冒号作为分隔符,按照第三列数字(用户id错了,因为跳过字段时,sort参数,改变sort四、uniq[/b]
该格式中,uniq,处理过程中,去掉重复的行。uniq,结果就写入标准输出;如果in_file如何工作。
$cat names
Lucy
Tony
Fred
Tony
$
来删除这种重复的行:
$uniq names
Lucy
Tony
Fred
Tony
$
没有用吗?对了,前面说了,uniq分开了,uniq就连续了,这次uniq命令,完成的就是这个功能)
-d[/b]的-d(或标准输出),不管他们在文件中连续出现多少次,这样的连续行只写一次。
$sort names | uniq -d
Tony
找到重复的连续行,然后只显示一行。下面的命令可以用来检查系统中是否有相同的帐户:
$sort /etc/passwd | uniq –d
$
文件的第一字段来进行操作:
$sort /etc/passwd | cut –d: -f1 | uniq –d
harry
tom
$
和2选项[/b]
删除重复行的同时,显示每行出现的次数。
$sort names | uniq -c
1 Fred
1 Lucy
2 Tony
$
、grep的用法。re在笔者以下几篇文章中分别加以讨论:
http://licong.blog.51cto.com/542131/200431学习笔记》
http://licong.blog.51cto.com/542131/204226高级命令》
http://licong.blog.51cto.com/542131/151976再重复一次,以上工具掌握得越灵活,编写shell
Shell、grep、re等。Re脚本解决问题就越容易!re/sed/awk一、[/b]cut[/b]
其中,chars个字符截取出来;用逗号分隔的数值列表,如-c1,13,50和50到50把data如果不指定file命令用作管道线中的过滤器。我们再看who意思是截取行中的第1到行尾的字符(登陆时间)。
-d[/b]当数据文件或命令的输出不像who该文件的第一个冒号之前的字符都是系统用户名,我们想要截取这些用户名应该怎么办呢?因为每个名字的长度都可能不一样,所以-c,命令格式变为:
cut –ddchar –ffields file
表示要从文件file指定字符是一样的(所以要从/etc/passwd过滤器tr其中from-chars中,它就被转换成to-chars文件中的小写m先截取第1和6字段,然后tr将所有小写字母转换为大写。
-s[/b]选项用来压缩to-chars将m和W替换成一个字符,所以第二行的WWW带-s文件每行的多个空格压缩为一个,这里from-chars是同样的效果,而且和sed均不改变源文件(只是对文件的一个拷贝进行处理)
-d[/b]任何列在from-chars文件中的所有空格,结果写入标准输出(屏幕)。该命令和sed ‘s/ //g’。
每个文件中符合模式pattern文件为例:
$cat /etc/passwd
mysql:x:501:501::/home/mysql:/bin/bash
www:x:48:48::/home/www:/bin/bash
ldap:x:55:55:LDAP User:/var/lib/ldap:/bin/false
test:x:502:502::/home/test:/bin/bash
stu1:x:503:503::/home/stu1:/bin/bash
$grep www /etc/passwd
www:x:48:48::/home/www:/bin/bash
$
。如果在给定的文件中没有符合该迷失的字符串,grep的内容如下:
$cat data
www in data
tom in data
jerry in data
$
两个文件中搜索www的行外,还显示了他们所在的文件名。
(www的介绍不在本文给出,请参考其他文章。
-v[/b]处理这个问题很容易:用-v的行:
$grep –v www /etc/passwd
mysql:x:501:501::/home/mysql:/bin/bash
ldap:x:55:55:LDAP User:/var/lib/ldap:/bin/false
test:x:502:502::/home/test:/bin/bash
stu1:x:503:503::/home/stu1:/bin/bash
选项[/b]
中没有包含www很方便的把每个文件显示为一行,我们可以在命令后面通过管道把输出输送给wc –l如果grep:www:x:48:48::/home/www:/bin/bash
的第2用于对指定的文件中的行进行排序,其基本格式为:
sort file(s)
有许多选项,可以让排序操作非常灵活。下面我们只介绍其中一部分选项。
-u[/b]命令,在输出结果中去除重复的行:
$sort names
Fred
Lucy
Tony
Tony
$sort –u names
Fred
Lucy
Tony
$
选项[/b]
选项[/b]
另一种方法是用-o该命令把对文件names不能成功,它将以破坏文件而告终。然而,采用-o确实蛮好的。
-n[/b]编码的顺序来进行排序的,如果要按照数学方式来排序,该怎么做呢?看下面的例子:
$cat data
1 11 www
-3 13 jerry
2 12 tom
$sort data
1 11 www
2 12 tom
-3 13 jerry
$sort –n data
-3 13 jerry
1 11 www
2 12 tom
跳过字段[/b]
代表跳过第一字段。注意,不是所有的sort版本有关。
$sort +1n data
sort: open failed: +1n: No such file or directory
如果想要以冒号作为分隔符,按照第三列数字(用户id错了,因为跳过字段时,sort参数,改变sort四、uniq[/b]
该格式中,uniq,处理过程中,去掉重复的行。uniq,结果就写入标准输出;如果in_file如何工作。
$cat names
Lucy
Tony
Fred
Tony
$
来删除这种重复的行:
$uniq names
Lucy
Tony
Fred
Tony
$
没有用吗?对了,前面说了,uniq分开了,uniq就连续了,这次uniq命令,完成的就是这个功能)
-d[/b]的-d(或标准输出),不管他们在文件中连续出现多少次,这样的连续行只写一次。
$sort names | uniq -d
Tony
找到重复的连续行,然后只显示一行。下面的命令可以用来检查系统中是否有相同的帐户:
$sort /etc/passwd | uniq –d
$
文件的第一字段来进行操作:
$sort /etc/passwd | cut –d: -f1 | uniq –d
harry
tom
$
和2选项[/b]
删除重复行的同时,显示每行出现的次数。
$sort names | uniq -c
1 Fred
1 Lucy
2 Tony
$
、grep的用法。re在笔者以下几篇文章中分别加以讨论:
http://licong.blog.51cto.com/542131/200431学习笔记》
http://licong.blog.51cto.com/542131/204226高级命令》
http://licong.blog.51cto.com/542131/151976再重复一次,以上工具掌握得越灵活,编写shell
相关文章推荐
- [Shell学习笔记] 命令行下的高级网络工具cURL命令
- HBase-1.0.1学习笔记(二)HBase Shell工具使用
- shell学习笔记(二)—— vi 编辑工具
- shell学习笔记二--工具 推荐
- shell学习笔记二--工具
- appium学习笔记之Androidui自动化测试框架环境和工具集appium+python+sdk+node.js+jdk+pip+robotframework-appiumlibrary等
- C++ Primer 学习笔记_97_用来大型程序的工具 -多重继承与虚继承[续2]
- C++ Primer 学习笔记_104_特殊工具与技术 --嵌套类
- [Linux学习笔记] Linux常用命令 - 番外篇(Shell使用技巧)
- Liunx 命令行与shell脚本编程大全 第五章学习笔记(Vim 编辑器使用详解 解释+图示)
- Java程序猿的JavaScript学习笔记(9—— jQuery工具方法)
- rsync同步工具学习笔记
- shell 学习笔记整理(二)
- Cocos2dx 学习笔记30 Cocos开发中性能优化工具(三):Visual Studio内存泄漏检测工具(Visual Leak Detector)
- shell学习笔记(一):管道与重定向
- Shell学习笔记——条件执行
- 蜗龙徒行-Spark学习笔记【二】Spark shell下kmeans聚类算法的应用
- R语言工具学习笔记(一)修改字体及背景
- shell学习笔记汇总
- shell 脚本语言学习笔记