5_find grep sed awk 详解
find :查找文件系统中指定的文件。可以按文件名(-name) 权限(-perm) 归属人 查找。
find 要查找文件的路径 表达式
*通配符 可以添加在文件名的任意位置
常用的例子(具体可参照 find --help):
find . -name 1.txt 在当前目录以及子目录下查找文件 1.txt
find /tmp -name 1.txt 在/tmp目录以及子目录下查找文件 1.txt
find /bin/ -perm 4755 | xargs ls -al 管道符号的作用是把前面的输出结果作为后面的参数再去执行后面的部分。
find /tmp -name "1.txt " | -exec ls -l
find /tmp -name '*.txt' -exec ls -l {} \;
grep:是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
grep [命令选项] 要查找的匹配模式 [要查找的文件名]
-c 显示每行的匹配次数
-i 不区分大小写
-n 显示出行号和行
-v没有匹配到的行输出来
-r 递归查找
-A 显示匹配行以及行以下3行 grep -A 3 root /etc/passwd
-B 显示匹配行以及行以上3行 grep -B 3 root /etc/passwd
-C 显示匹配行以及以下和以上3行 grep -C 3 root /etc/passwd
grep cams /root/1.txt 在1.txt文件中查找cams字符串
grep -r cams /root/cams 在/root/cams目录下及其子目录下的所有文件中查找cams字符串,并把匹配的行打印出来。
grep -A 1 'root' /etc/passwd
grep 除了能够查找文件外,还能够将任意输出流重定向到grep 进行查找:
ps aux | grep ora 查找进程名中包含ora的所有进程信息
sed :是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据进行替换、删除、新增、选取等特定工作。
sed 参数[-nefr] 动作 文件
参数:
-n :安静模式。只有经过sed特殊处理的那一行(或者动作)才会被列出来。
-f:直接将sed的动作写在一个文件内,-f filename ,则可以运行filename 内的sed动作。
-r:默认是基础正规表示法语法
-i :直接修改读取的文件内容,而不是输出到终端。
动作:
a:新增,a的后面可以接字符串,而这些字符串会在目前的下一行出现。
c:取代,c的后面可以接字符串。
d:删除,d的后面不接任何东西。
i:插入,i后面可以接字符串,这些字符串会在新的一行出现(目前的上一行)。
p:列印,将某个选择的数据打印出来,一般和sed -n结合
s:取代,可以直接取代,通常搭配正规表示法。例:1,20s/old/new/g 把第一行至第二十行的old替换为new ,g全部替换
常用例子,可以自行尝试以下语句具体是什么意思:
sed后面的动作,只能用单引号
nl /etc/passwd | sed '2,5d'
nl /etc/passwd | sed '2d'
nl /etc/passwd | sed '2,$d'
nl /etc/passwd | sed '2a drink tea '
nl /etc/passwd | sed '2i drink tea '
nl /etc/passwd | sed '2a Drink tea or \
drink beer ?'
nl /etc/passwd | sed '2,5c NO 2-5 number'
nl /etc/passwd | sed -n '5,7p'
nl /etc/passwd | sed -n '/root/p'
nl /etc/passwd | sed '/root/d'
nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p}'
nl /etc/passwd | sed -n '/bash/{s/bash/bashshell/;p;q}'
sed 's/要被取代的字符串/新的字串/g'
/sbin/ifconfig eth0 | grep 'inet addr'|sed 's/^.*addr://g'| sed 's/Bcast.*$//g'
/sbin/ifconfig eth0 | grep 'inet addr'|sed 's/^.*addr://g'
nl /etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/'
awk:是一个强大的文本分析工具。通常awk是以文件的一行为单位处理的,awk每接收文件的一行,然后执行相应的命令,来处理文本。
有三种方式调用awk:
1.命令行方式(重点介绍)
2.shell脚本方式
3.将所有的awk命令插入一个单独文件,然后调用
具体实例:
1、last -n 5 | awk '{print $1}' 打印出前五行的第一列($0表示所有列,$表示第n列)
2、cat /etc/passwd | awk -F ':' '{print $1"\t"$7}'
只显示/etc/passwd 的第一和第七列,中间以tab键分隔。 -F 指定域分隔符为 ":" 。
3、cat /etc/passwd | awk -F ':' 'BEGIN {print "name,shell"} {print $1 ","$7} END {print "blue,/bin/nosh"}'
只显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以逗号分隔,而且所有行 添加列名name,shell,在最后一行添加"blue,/bin/nosh"。
4、 awk -F: '/root/{print $7}' /etc/passwd
搜索/etc/passwd有root关键字的所有行,并显示对应的shell。
以下是awk编程,可以自定义变量,条件语句(从c语言借鉴来的),循环语句,数组。
5、awk '{count++;print $0;} END{print "user count is",count}' /etc/passwd
统计/etc/passwd 的账户人数
6、awk 'BEGIN {count=0;print "[start]user
count is ", count} {count=count+1;print $0;} END {print "[end] user
count is",count}' /etc/passwd
这个也是统计/etc/passwd 的账户人数
常用的也就这么多吧!写总结到这吧,以后发现了新大陆,再过来补充。
下面说一下sed和awk的区别:
awk是一种程序语言,对文档资料的处理具有很强的功能,awk擅长从格式化报文或一个大的文本中抽取数据。
sed是一个精简的、非交互式的编辑器,它能执行与编译vi相同的编辑任务。
总结:
1、如果文件是格式化的,即由分隔符分为多个域的,优先使用awk;
2、awk适合按列(域)操作,sed适合按行操作。
3、awk适合对文件的抽取整理,sed适合对文件的编辑。
注:sed和awk对文件的编辑并没有对文件本身改变,只是把输出的进行改变。
5_find grep sed awk 详解的更多相关文章
- linux四剑客-grep/find/sed/awk/详解-技术流ken
四剑客简介 相信接触过linux的大家应该都学过或者听过四剑客,即sed,grep,find,awk,有人对其望而生畏,有人对其爱不释手.参数太多,变化形式太多,使用超级灵活,让一部分人难以适从继而望 ...
- 【linux】linux命令grep + awk 详解
linux命令grep + awk 详解 grep:https://www.cnblogs.com/flyor/p/6411140.html awk:https://www.cnblogs.com ...
- sed命令详解 vim高级技巧 shell编程上
第1章 sed命令详解 1.1 查找固定的某一行 1.1.1 awk命令方法 [root@znix ~]# awk '!/oldboy/' person.txt 102,zhangyao,CTO 10 ...
- 【转】【Linux】sed命令详解
sed命令详解 sed是stream editor的简称,也就是流编辑器.它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令 ...
- 转 linux之sed命令详解
http://jingyan.baidu.com/article/fec4bce2228f60f2618d8bb0.html sed 编辑裁剪文件命令 sed -i "s/\/db\/te ...
- Linux文本处理三剑客之grep及正则表达式详解
Linux文本处理三剑客之grep及正则表达式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Linux文本处理三剑客概述 grep: 全称:"Global se ...
- 干货!上古神器 sed 教程详解,小白也能看的懂
目录: 介绍工作原理正则表达式基本语法数字定址和正则定址基本子命令实战练习 介绍 熟悉 Linux 的同学一定知道大名鼎鼎的 Linux 三剑客,它们是 grep.awk.sed,我们今天要聊的主角就 ...
- (转)awk 详解
出处:https://blog.51cto.com/yijiu/1358416 awk详解 awk是一款非常牛逼的报告生成工具,能够将文本格式化成显示为比较直观的结果 废话不多说,直接上例子 awk的 ...
- Linux学习之sed命令详解
概述 sed是stream editor的简称,也就是流编辑器.它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区 ...
随机推荐
- JQuery学习笔记——基础选择器
第一篇博客,现在原生安卓需求不大了.招聘的Android工程师都需要附带更多的其他技术.这也是开启我学习前端之路的开端.前端时间看了HTML.CSS等,在界面渲染这一块,就不多记录博客了.现在学习着J ...
- dotpeek的导出
在开始写之前先说明下,搜了很久的度娘,就是没找到dotpeek的导出功能,····,看来用的人不多, ------------------------------------------------- ...
- Spring+SpringMVC+MyBatis集成学习笔记【一】
一,首先要清楚,SpringMVC其实就是Spring的一个组件 例如我们知道Spring中有类似于,AOP TX等等类似的组件,所以SpringMVC其实就是Spring的一个组件,是S ...
- (转)css内边距与外边距的区别,精辟啊
css内边距与外边距的区别 (2012-05-02 13:54:54) 转载▼ 标签: 杂谈 分类: css 本文也是网上看了后收藏的,忘了原地址(以后收藏文章得注意) 你真的了解margin吗?你知 ...
- HTML5使用Canvas来绘制图形
一.Canvas标签: 1.HTML5<canvas>元素用于图形的绘制,通过脚本(通常是javascript)来完成. 2.<canvas>标签只是图形容器,必须使用脚本来绘 ...
- WCF Cookie处理
wcf操作cookie看似很简单,如果不对Wcf研究一把还是很难的,基本上无从下手. 这里上一图 上面的结果,岂止是坑爹,简直就是坑爹!!! 废话不多说,直接上代码: cookie读取 var req ...
- JS基础学习篇(一)
近来一直在学习js和jquery.刚刚进入前端工作还没有多久,虽然大学里学习的是编程自认为也学的还可以,但前端接触的不多,一直认为前端十分简单.其实不然,特别是工作的时候要自己设计一个完整的项目前端, ...
- 使用jquery获取url及url参数的方法
使用jquery获取url以及使用jquery获取url参数是我们经常要用到的操作 1.jquery获取url很简单,代码如下: window.location.href; 其实只是用到了javasc ...
- Vue事件处理
前面的话 Vue事件监听的方式貌似违背了关注点分离(separation of concern)的传统理念.实际上,所有的Vue.js事件处理方法和表达式都严格绑定在当前视图的ViewModel上,它 ...
- unity 单指双指事件(单指点击移动,双指滑动拖放)
using System.Collections; using System.Collections.Generic; using UnityEngine; public class TouchCon ...