设为首页 收藏本站
查看: 823|回复: 0

[经验分享] LINUX 下 find grep sed awk 的常见基本用法特点

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-7-25 10:17:10 | 显示全部楼层 |阅读模式
LINUX 下 find grep sed awk 的常见基本用法特点

只为让自己具有更高的水准,这就开始了长达6个月的小白进阶路!
这几天学习linux基础命令有点犯蒙,尤其是对文件查找这块。所有我想把一些我觉得常用的实用的参数项总结下来,大神勿喷哈。。。
不到之处请大家指教,小女子在此谢过了。

一、find:命令用于查找文件系统中指定的文件,其命令格式为:
1、find pathname -options [ -print  -exec  -ok ... ]
(1)find 命令的参数:
     pathname:find命令所查找的目录路径。
     -print:find命令将匹配的文件输出到标准输出。
    -exec:find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为‘command’{};,注意{ }和 ; 之间的空格。
     -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
(2)查找规则:  
     -perm  #按照权限查找
     -name   #按照文件名来查找(-name支持通配符或者’’)
     -user   #按照文件属主来查看文件
     -group  #按照文件的所属组来查看文件
     -exec   #查找后执行命令的时候不询问用户,直接执行
     -type   #根据文件类型查找文件(普通文件-f;目录文件-d;链接文件-l;块设备文件-b;字符设备文件-c;管道文件-p;socket文件-s)
eg.
   find . -name 1.txt  #在当前目录以及子目录下查找1.txt
   find . -name “1.*”
   find /tmp -name 1.txt  #在/tmp目录下查找1.txt
   find /tmp -type s
   find /bin/ -perm 4755 | xargs ls -al  (xargs 用来把前一个命令的输出结果转换为后一个命令的参数)
   find /bin/ -exec 4755 | xargs ls -l {} \\

二、grep:能使用正则表达式匹配文本,并把匹配的行打印


    -c #只输出匹配行的次数
    -r #查询目录及其子目录
    -i #不区分大小写(只适用于单个字符)
    -n #显示匹配出的载文件中是第几行
    -v #显示不包含匹配文本的所有行
    -n #显示匹配出的载文件中是第几行
    --color=auto #找到的关键字加上颜色显示
    -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 查找的字符串 文件
    grep -r 查找的字符串 目录

(1)将/etc/passwd,高亮将出现 root 的行取出来,同时显示这些行在/etc/passwd的行号
# grep -n root /etc/passwd
(2)根据文件内容递归查找目录
# grep ‘ettercap’ *    #在当前目录搜索带‘ettercap’行的文件
    # grep -r ‘ettercap’ *    ##在当前目录及其子目录下搜索'energywise'行的文件
# grep -l -r ‘ettercap’ *     #在当前目录及其子目录下搜索'ettercap'行的文件,但是不显示匹配的行,只显示匹配的文件
(3)字符类的反向选择 [^]:如果想要搜索到有 cc 的行,但不想要 oo 前面有 g,如下grep -n'[^a-z]oo'  2.txt
(4)  grep -r cams /root/
(5)搜索以root开头的文件   ps aus | grep vi --color

(6)获取有数字的一行,如下grep -n‘[0-9]’ 2.txt
(7)找出空白行grep -n  ‘^$’  2.txt
三、sed:主要以行为单位进行处理,将数据增删改查选取等。。。
sed 参数[ -nefr ] 动作[ function ] 文件
1、选项与参数:
-n :使用安静模式。在一般sed用法中,所有来自STDIN的数据一般都会被列出到终端上。但是如果加上-n 参数后吗,则是只有sed特殊处理的那一行(或动作)才会被列出来。
-e :直接在指令模式上云行,sed动作的编辑;
-f :直接将sed的动作写在一个文件内,- f filename 则可以运行 filename 内的sed动作;
-r :sed的动作支持的是延伸正规表达发的语法。(默认是基础正则表示法语法);
-i :直接修改读取的文件内容,而不是输出到终端。

2、动作说明:[ n1[ ,n2 ] ] function
n1,n2 :不见得hi存在,一般代表【选择进行动作的行数】,举例来说,如果我的动作是需要在10到20行之间进行的,则【10,20[ function ]】
function:
a :新增,新增的内容在目前的下一行出现(目前的下一行);
c  : 取代,c的后面可以接字串,这些字串可以取代n1,n2之间的行
d :删除,d的后面通常不接任何东西;
i : 插入,i的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)
p :列印,即将某个选择的数据印出。通常p会与参数 sed -n 一起运行
s :取代,通常此动作可以搭配正则表达式

eg.
1)以行为单位的新增/删除     nl /etc/passwd | sed '2,5d'
2)直要删除第二行     nl /etc/passwd | sed '2d'
3)要删除第3到最后一行     nl /etc/passed | sed '3,$d'
4)在第二行后(亦即是加在第三行)加上【drink tea】字样     nl /etc/passwd | sed '2a drink tea'
5)新增两行以上的内容【drink tea......】与【drink beer?】     nl /etc/passwd | sed '2a drink tea......\\>drink beer?'
6)多点编辑,删除/etc/passwd第三行到末尾的数据,并把bash替换为blueshell
          nl /etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/'

四、awk:简单来说,awk就是把文件逐行的读入,以空格为默认分隔符(-F)将每行切片,切开的部分在进行各种分析处理。
首先是让我迷惑很久的-F 分隔符的用法,其实就是类似于cat之类的操作:
     例如操作data的文件:
         zhc-123|zhang
       hongchangfirst-99|zhang
       hongchang-100|zhang
     如果我们 awk -F '-' '{print $1;}' data,会打印出
        zhc
        hongzhangfirst
        hongzhang
分隔符默认是空格,

变量名    含义
ARGC   命令行变元个数
ARGV   命令行变元数组
FILENAME   当前输入文件名
FNR   当前文件中的记录号
FS   输入域分隔符,默认为一个空格
RS   输入记录分隔符
NF   当前记录里域个数
NR   到目前为止记录数
OFS   输出域分隔符
ORS   输出记录分隔符

eg.last -n 5(仅取出前五行)
  last -n 5 | awk '{print $1}'  仅显示最近登录的5个帐号

$0 表示所有域  $1表示第一个域  $n表示地n个域

(1)命令行方式--(重点介绍)  awk [-F field-separator] 'commands' input-file(s)
   其中,commands是真正awk命令,[-F 域分隔符]是可选的。input-file(s)是待处理的文件
   在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域 。通常,在不指明-F 域分隔符的情况下,默认的域分隔符是空格。
(2)shell脚本方式
    将所有的awk命令插入一个文件,并使awk程序可执行,然后awk明了解释器作为脚本的首行,一般通过键入脚本名称来调用。相当于shell脚本首行的:#!/bin/bash====>#!/bin/awk
(3)将所有的swk命令插入一个单独文件,然后调用:awk -f awk-script-file input-file(s)



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-249068-1-1.html 上篇帖子: free命令及buffer和cache区别 下篇帖子: Centos6.6 网络配置以及虚拟机与本机Ping通办法 LINUX
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表