关于Shell的实用技巧分享
2017-10-28 16:26
381 查看
学过了不代表你知道了,掌握了不代表你能一直记得,温故而知新。辛辛苦苦学完的Shell全部抛到九霄云外了。。。。。
借助周末好时光,带上五姑娘,把shell相关的知识随意的复习,分享一下。
Shell的基本操作就不说了,聊一聊shell的高级文本处理命令吧!通常我们用到的文本处理命令分为以下八个:
wc-计数,sort-排序,uniq-去重,cut-切割,grep-筛选,sed-流编辑,awk-报表生成器,find-查找
1、wc,word count-统计文件行数,字节,字符数
常用指令有:
wc +文件名,计算文件内容的行数,字符数和字节数
wc -L 统计字符串长度
wc -l 统计文件的行数
wc -c 统计文件的字符数
2、sort--对整列进行排序
sort +文件名 对整个文件的行排序,字典顺序
-t: 以:为分隔符,-nk 取第二个字段排序。组合使用为:sort -nk 2 -t: +文件名
-u:去重
-r:去重
例子: sort -t: -u -nk 2 sort.txt 对sort文件的每一行按:切割,按照数值排序去重。
3、uniq去重,这个比较简单。直接在输出结果中加入| uniq就可以去掉重复的
-c 显示重复的次数
-u -c 一起表示打印不重复行
-d -c一起表示打印重复行
-w 2 表示 以前两个字符为标准
4、cut,切割结果。
例子:cut -d: -f 3,5 切割第三个和第五个字段
5、grep 文本生成器,主要的用途在于过滤。
可以直接接字符,字符串,也可以可以指定某个位置的文件中的行带有指定字符。
如: grep zhigang ./*.txt 显示当前所有txt文件中有zhigang的行。
-c,可以计数,算出行数多少。
-v,表示查询不含指定内容的行
复杂的表达式请使用正则表达式。
6、sed流编辑器,不会改变文件的内容,只是将读取的文件存入缓冲区,然后进行处理输出,不影响文件内容。
sed '3d' sed.txt 删除sed文件的第二行
sed ‘2c hello’ sed.txt 将第二行替换成hello
sed ‘s/hello/hi/g’ sed.txt 将所有的hello替换成hi
sed -n '2,4p' sed.txt 打印sed文件的第二行和第四行
7、awk--报表生成器,直接上一个例子的
cat abc.txt | awk -F: '{print $1 $3}' 打印查询结果中以:分割的第一个和第三个字段
awk 'BEGIN{FS=":";OFS="\t"}{print $1 $3}' /etc/passwd 打印指定目录下,按:分割的第一个和第三个数据,并且替换分隔符为\t
其他使用比较复杂,需要详细的了解。
8、find---查找
find 文件路径 -name “*.txt” 查找指定路径下的文本文件
-iname 忽略大小写
用的比较多的形式是正则表达式指定需要查找的内容
总的来说,shell编程在linux中运用起来非常的方便,很多的复杂操作,脚本编写,都可以通过shell命令轻松的搞定。但是shell语法本身比较出类,用起来不是很方便!
专门做shell编程的可以多研究,否者的话,只要能够看懂即可!
借助周末好时光,带上五姑娘,把shell相关的知识随意的复习,分享一下。
Shell的基本操作就不说了,聊一聊shell的高级文本处理命令吧!通常我们用到的文本处理命令分为以下八个:
wc-计数,sort-排序,uniq-去重,cut-切割,grep-筛选,sed-流编辑,awk-报表生成器,find-查找
1、wc,word count-统计文件行数,字节,字符数
常用指令有:
wc +文件名,计算文件内容的行数,字符数和字节数
wc -L 统计字符串长度
wc -l 统计文件的行数
wc -c 统计文件的字符数
2、sort--对整列进行排序
sort +文件名 对整个文件的行排序,字典顺序
-t: 以:为分隔符,-nk 取第二个字段排序。组合使用为:sort -nk 2 -t: +文件名
-u:去重
-r:去重
例子: sort -t: -u -nk 2 sort.txt 对sort文件的每一行按:切割,按照数值排序去重。
3、uniq去重,这个比较简单。直接在输出结果中加入| uniq就可以去掉重复的
-c 显示重复的次数
-u -c 一起表示打印不重复行
-d -c一起表示打印重复行
-w 2 表示 以前两个字符为标准
4、cut,切割结果。
例子:cut -d: -f 3,5 切割第三个和第五个字段
5、grep 文本生成器,主要的用途在于过滤。
可以直接接字符,字符串,也可以可以指定某个位置的文件中的行带有指定字符。
如: grep zhigang ./*.txt 显示当前所有txt文件中有zhigang的行。
-c,可以计数,算出行数多少。
-v,表示查询不含指定内容的行
复杂的表达式请使用正则表达式。
6、sed流编辑器,不会改变文件的内容,只是将读取的文件存入缓冲区,然后进行处理输出,不影响文件内容。
sed '3d' sed.txt 删除sed文件的第二行
sed ‘2c hello’ sed.txt 将第二行替换成hello
sed ‘s/hello/hi/g’ sed.txt 将所有的hello替换成hi
sed -n '2,4p' sed.txt 打印sed文件的第二行和第四行
7、awk--报表生成器,直接上一个例子的
cat abc.txt | awk -F: '{print $1 $3}' 打印查询结果中以:分割的第一个和第三个字段
awk 'BEGIN{FS=":";OFS="\t"}{print $1 $3}' /etc/passwd 打印指定目录下,按:分割的第一个和第三个数据,并且替换分隔符为\t
其他使用比较复杂,需要详细的了解。
8、find---查找
find 文件路径 -name “*.txt” 查找指定路径下的文本文件
-iname 忽略大小写
用的比较多的形式是正则表达式指定需要查找的内容
总的来说,shell编程在linux中运用起来非常的方便,很多的复杂操作,脚本编写,都可以通过shell命令轻松的搞定。但是shell语法本身比较出类,用起来不是很方便!
专门做shell编程的可以多研究,否者的话,只要能够看懂即可!
相关文章推荐
- 关于CAShapeLayer的一些实用案例和技巧
- Linux系统下Shell命令行快捷键实用技巧
- 拒绝被坑 超实用的移动电源选购技巧 分享给大家
- 关于PADS的一些概念和实用技巧(一)
- 前端文摘——网页图片优化的实用工具和技巧分享
- 8个实用的Shell脚本分享
- 关于CAShapeLayer的一些实用案例和技巧
- 【老鸟分享】Linux命令行终端提示符多种实用技巧!
- 分享实用的Sql语句技巧
- Shell实用技巧:快速去除字符串中的空格
- iOS系统预览文件但不分享的实用技巧 (iOS10, QLPreviewController)
- jquery中关于bind()方法的使用技巧分享
- PHP技巧分享:7个非常适合初学者使用的实用PHP方法
- 分享ES6的7个实用技巧
- 分布式开发成功秘笈:十大实用技巧分享
- Linux系统下Shell命令行快捷键实用技巧
- 分享yum的一些常用、实用使用技巧
- UE 实用技巧分享
- 分享十条nmap实用命令行技巧
- PHP技巧分享:7个非常适合初学者使用的实用PHP方法