当前位置: 首页 > news >正文

grep简单用法及脚本基础篇

grep的基本选项说明

  • grep命令 选项说明: --color=auto:对匹配到的⽂本着⾊显⽰; -v:显⽰不被模式匹配到的⾏; -i:
    忽略字符⼤⼩写; -n:显⽰匹配的⾏号; -c:统计匹配到的字符串; -o:仅显⽰匹配到的字符串; -q:静
    默模式,不输出任何信息; -A #:表⽰显⽰匹配到的⾏并显⽰该⾏后#⾏,#表⽰为数字; -B #:表⽰显⽰
    匹配到的⾏并显⽰该⾏前#⾏,#表⽰为数字; -C #:表⽰显⽰匹配到的⾏并显⽰该⾏前后各#⾏,#表⽰为
    数字; -e:实现多个选项的逻辑or或更新; -w:匹配整个单词; -E:使⽤ERE扩展正则,等效于egrep命
    令; -F:相当于fgrep,不使⽤正则表达式;

    例题:【例1】查找/etc⽬录下,所有包含conf字串的⽂件
    [root@magedu ~]# ls -R /etc|grep conf
    anthy-conf
    asound.conf
    autofs.conf
    autofs_ldap_auth.conf
    ...
    【例2】显⽰/root/passwd⽂件中包含root字串所在的⾏并显⽰⾏号
    [root@magedu ~]# grep root /root/passwd
    1:root:x:0:0:root:/root:/bin/bash
    11:operator:x:11:0:operator:/root:/sbin/nologin
    【例3】显⽰passwd⽂件中,不包含bash字串的⾏,并显⽰⾏号
    [root@magedu ~]# grep -n -v bash passwd
    2:bin:x:1:1:bin:/bin:/sbin/nologin
    3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
    4:adm:x:3:4:adm:/var/adm:/sbin/nologin
    5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    6:sync:x:5:0:sync:/sbin:/bin/sync
    ...
    【例4】显⽰passwd⽂件中,包含root字串的⾏的总⾏数
    [root@magedu ~]# grep -c root passwd
    2
    【例5】仅显⽰/root/passwd⽂件中的root字串及所在的⾏号
    [root@magedu ~]# grep -on root passwd
    1:root
    1:root
    1:root
    11:root
    【例6】显⽰/root/passwd⽂件中,包含root字串的⾏和其下2⾏的内容
    [root@magedu ~]# grep -A 2 root passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin

    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
    【例7】显⽰/root/passwd⽂件中,包含root字串的⾏和其上2⾏的内容
    [root@magedu ~]# grep -B 2 root passwd
    root:x:0:0:root:/root:/bin/bash

    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin

    脚本变量之位置变量

    shift用法:shift功能是可以更换参数位置
    位置参数的值总结位置参数 含义
    $0 当前这个Shell程序的文件名
    $# 传递给程序的总的参数数目
    $? 上一个代码或者Shell程序在Shell中退出的情况,如果正常退出则返回0,否则返回非0值
    $* 传递给程序的所有参数组成的字符串
    $n 表示第n个参数(n<10)
    $@ 以“参数1”、“参数2”……保存所有的参数
    $$ 本程序的(进程ID)PID
    $! 上一个命令的PID
    ${n} 表示第n个参数(n>9)

    常用整数比较操作符函数 说明(例子)
    -eq 等于,if [ "$a" -eq "$b" ]
    -ne 不等于,if [ "$a" -ne "$b" ]
    -gt 大于,if [ "$a" -gt "$b" ]
    -ge 大于等于,if [ "$a" -ge "$b" ]
    -lt 小于,if [ "$a" -lt "$b" ]
    -le 小于等于,if [ "$a" -le "$b" ]
    < 小于(在双括号内使用),(("$a"<"$b"))
    <= 小于等于(在双括号内使用),(("$a"<="$b"))

    大于(在双括号内使用),(("$a">"$b"))
    = 大于等于(在双括号内使用),(("$a">="$b"))

    常用字符串比较操作符函数 说明(例子)
    = 等于,if [ "$a"="$b" ]
    == 等于,if [ "$a"=="$b" ],在[[ ]]结构里使用匹配模式
    != 不等于,if [ "$a"!="$b" ],在[[ ]]结构里使用匹配模式
    < 小于,if [[ "$a"<"$b" ]],if [ "$a"\<"$b" ](在[]结构里<需要转义)

    大于,if [[ "$a">"$b" ]],if [ "$a"\>"$b" ](在[]结构里>需要转义)
    -z 字符串为“null”,长度为0
    -n 字符串不为“null”,长度不为0

    常用混合比较操作符函数 说明
    -a 逻辑与
    -o 逻辑或

    分析下列的测试目录含义

    [[ $a==z ]] #如果变量$a以字符"z"开始(匹配模式)则为真
    [[ $a=="z
    " ]] #如果变量$a与字符"z"(字面上的匹配)相等则为真
    [ "$a"=="z
    " ] #如果变量$a与字符"z*"(字面上的匹配)相等则为真
    [ -f "somefile" ] #判断是否为一个文件
    [ -x "/bin/ls" ] #判断/bin/ls是否有可执行的权限
    [ -n "$var" ] #判断$var变量是否有值
    [ "$a"="$b" ] #判断$a和$b是否相等

嵌套的if/then语句

if [ condition1 ]
    then
        if [ condition2 ]
            then
            do-something            #仅当condition1和condition2同时满足才执行
        fi
fi

 操作符相关主题

常见的操作符主要包括赋值操作符、计算操作符、位操作符合逻辑操作符。它们与C语言的操作符是相同的。包括:

赋值操作符:=;
计算操作符:+、-、*、/、**(求幂)、%;
位操作符:<<、<<=、>>、>>=、&、&=、|、|=、~、!、^、^=;
逻辑运算符:&&、||。

转载于:https://blog.51cto.com/12148637/2368271

相关文章:

  • SysUtils.UpperCase、SysUtils.LowerCase - 大小写转换
  • 使用X-UA-Compatible来设置IE浏览器兼容模式
  • 区块链技术对未来的影响
  • Delphi 2009 新增的 Class Explorer
  • jar包和war包的区别:
  • 新手须知 C、C++和VC++之间的区别
  • Linux权限、用户以及文本处理的一些相关命令
  • git clone,git push,git pull
  • 对话巨杉核心研发团队:分布式数据库自研之路
  • 用NetHogs监控Linux每个进程的网络使用情况
  • 328
  • 学习Android的一些笔记
  • [PTA]数组循环右移
  • 国庆节
  • AI产业化需结合云计算、大数据
  • [case10]使用RSQL实现端到端的动态查询
  • CAP理论的例子讲解
  • chrome扩展demo1-小时钟
  • Debian下无root权限使用Python访问Oracle
  • Java|序列化异常StreamCorruptedException的解决方法
  • Java知识点总结(JavaIO-打印流)
  • Js基础——数据类型之Null和Undefined
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • markdown编辑器简评
  • MySQL-事务管理(基础)
  • win10下安装mysql5.7
  • XForms - 更强大的Form
  • 复习Javascript专题(四):js中的深浅拷贝
  • 老板让我十分钟上手nx-admin
  • 力扣(LeetCode)22
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 深入浅出webpack学习(1)--核心概念
  • 使用agvtool更改app version/build
  • 网络应用优化——时延与带宽
  • 我看到的前端
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • MyCAT水平分库
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • %check_box% in rails :coditions={:has_many , :through}
  • (06)金属布线——为半导体注入生命的连接
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (第一天)包装对象、作用域、创建对象
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (利用IDEA+Maven)定制属于自己的jar包
  • (四)模仿学习-完成后台管理页面查询
  • (一)Neo4j下载安装以及初次使用
  • .Net - 类的介绍
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .net2005怎么读string形的xml,不是xml文件。
  • .net打印*三角形
  • .Net的DataSet直接与SQL2005交互
  • .NET中的Exception处理(C#)