我们之前已经有文章说过管道符了,今天这里再简单总结一下用法。

1、行提取命令grep

grep命令的作用,是在指定的文件中,搜索符合条件的字符串。

命令格式:

[root@localhost ~ ] # grep [选项] ”搜索内容” 文件名

选项:

  • -A 数字:列出符合条件的行,并列出后续的n行。
  • -B 数字:列出符合条件的行,并列出前面的n行。
  • -c:统计找到的符合条件的字符串的次数。
  • -i:忽略大小写。
  • -n:输出行号。
  • -v:反向查找。
  • --color=auto:搜索出的关键字用颜色显示。

示例:

  • 例子1:查找用户信息文件/etc/passwd中,有多少可以登录的用户。

    [root@localhost ~]# grep "/bin/bash" /etc/passwd
  • 例子2:查找用户信息文件/etc/passwd中,包含有root的行,并列出后续的3行。
    [root@localhost ~]# grep -A 3 "root" /etc/passwd
  • 例子3:查找用户信息文件/etc/passwd中,可以登录的用户,并显示行号。
    [root@localhost ~]# grep -n "/bin/bash" /etc/passwd
  • 例子4:查找用户信息文件/etc/passwd中,不含有/bin/bash的行,其实就是列出所有的伪用户。
    [root@localhost ~]# grep -v "/bin/bash" /etc/passwd

2、find和grep的区别

find命令是在系统当中搜索符合条件的文件名,搜索时文件名是完全匹配。如果需要模糊查询,使用通配符进行匹配。

#建立文件abc
[root@localhost ~ ] # touch abc #建立文件abcd
[root@localhost ~ ] # touch abcd #查找abc文件
[root@localhost ~ ] # find . -name ”abc"
./abc

搜索文件名是abc的文件,只会找到abc文件,而不会找到文件abcd。虽然abed文件名中包含abc,但是find命令是完全匹配,只能和要搜索的数据完全一样,才能找到。

注意:

find命令是可以通过-regex选项识别正则表达式规则的,也就是说find命令可以按照正则表达式规则匹配,而正则表达式是模糊匹配。但是对于初学者而言,find命令和grep命令本身就不好理解,所以我们这里只按照通配符规则来进行find查询。

grep命令是在文件当中搜索符合条件的字符串,如果需要模糊查询,使用正则表达式进行匹配,搜索时字符串是包含匹配。

#在test文件中写入abc数据
[root@localhost ~ ] # echo abc > test #在test文件中再追加abcd数据
[root@localhost ~]#echo abcd >> test #在test文件中查找abc字符串
[root@localhost ~]#grep”abc" test
abc
abcd

grep命令查找时,只要数据行中包含有abc,就会都列出,所以abcabed都可以查询到。

3、管道符

管道符之前总结过,请看之前的文章:https://www.cnblogs.com/liuyuelinfighting/p/15530010.html

我们下面简单的做几个练习:

  • 练习1:
    查询本地所有网络连接,提取包含ESTABLISHED(已建立连接)的行,就可以知道我们的服务器上有多少已经成功连接的网络连接。

    [root@localhost ~]# netstat -an | grep "ESTABLISHED"
  • 练习2:
    如果想知道具体的网络连接数量,就可以再使用wc命令统计行数。

    [root@localhost ~]# netstat -an | grep "ESTABLISHED" | wc -l

4、通配符

通配符是用来匹配文件名的,文件名在查询的时候是完全匹配的,必须一模一样才会查询出,否则就要加通配符,进行模糊查询。

练习:

# 创建4个测试文件
[root@localhost tmp]# touch abc
[root@localhost tmp]# touch abcd
[root@localhost tmp]# touch 012
[root@localhost tmp]# touch 0abc # “*”代表查找所有的文件
[root@localhost tmp]# ls *
012 0abc abc abcd # “?"匹配任意一个字符,所以会匹配0abc
#但是不能匹配abc,因为“?”"不能匹配空
[root@localhost tmp]# ls ?abc
0abc # 匹配任何以数字开头的文件
[root@localhost tmp]# ls [0-9]*
012 0abc # 匹配不已数字开头的文件
[root@localhost tmp]# ls [^0-9]*
abc abed

『忘了再学』Shell基础 — 8、管道符介绍的更多相关文章

  1. 『忘了再学』Shell基础 — 3、echo命令的介绍与使用

    目录 1.echo命令的作用 2.echo命令的基本用法 3.echo命令的-e选项用法 4.echo命令一些特殊用法 (1)输出字符带有字体颜色 (2)输出字符带有背景颜色 在讲Shell脚本之前, ...

  2. 『忘了再学』Shell基础 — 10、Bash中的特殊符号(二)

    提示:本篇文章接上一篇文章,主要说说()小括号和{}大括号的区别与使用. 8.()小括号 ():用于一串命令执行时,()中的命令会在子Shell中运行.(和下面大括号一起说明) 9.{}大括号 {}: ...

  3. 『忘了再学』Shell基础 — 24、Shell正则表达式的使用

    目录 1.正则表达式说明 2.基础正则表达式 3.练习 (1)准备工作 (2)*练习 (3).练习 (4)^和$练习 (5)[]练习 (6)[^]练习 (7)\{n\}练习 (8)\{n,\}练习 ( ...

  4. 『忘了再学』Shell基础 — 25、扩展正则表达式

    目录 1.扩展正则表达式说明 2.练习 (1)+和?练习 (2)|和()练习 3.注意(重点) 1.扩展正则表达式说明 熟悉正则表达式的童鞋应该很疑惑,在其他的语言中是没有扩展正则表达式说法的,在Sh ...

  5. 『忘了再学』Shell基础 — 30、sed命令的使用

    目录 1.sed命令说明 2.行数据操作 (1)查看文件中的数据 (2)删除文件中的数据 (3)向文件中追加数据 (4)向文件中插入数据 (5)修改文件中的多行数据(删除,追加,插入) (6)替换文件 ...

  6. 『忘了再学』Shell基础 — 1、Shell的介绍

    目录 1.Shell的由来 2.Shell的两种执行指令方式 3.什么是Shell脚本 4.Shell 是一种脚本语言 1.Shell的由来 我们比较熟悉Windows系统的图形化界面,对于图形界面来 ...

  7. 『忘了再学』Shell基础 — 4、Bash基本功能(history命令)

    目录 1.history历史命令 2.设置命令历史记录的条数 3.清空历史命令 4.历史命令的调用 5.命令与文件的补全 在Linux系统中默认的Shell就是Bourne-AgainShell(简称 ...

  8. 『忘了再学』Shell基础 — 9、Bash中的特殊符号(一)

    目录 1.双单引号 2.双引号 3.$符号 4.反引号 5.$()符号 6.#符号 7.\符号 1.双单引号 '':单引号.在单引号中所有的特殊符号,如$和"`"(反引号)都没有特 ...

  9. 『忘了再学』Shell基础 — 11、变量定义的规则和分类

    目录 1.定义变量的规则 2.变量的分类 1.定义变量的规则 在定义变量时,有一些规则需要遵守 变量名称可以由字母.数字和下划线组成,但是不能以数字开头.如果变量名是2name则是错误的. 在Bash ...

  10. 『忘了再学』Shell基础 — 16、位置参数变量

    目录 1.位置参数变量$n 2.位置参数变量$*和$@ 3.位置参数变量$# 位置參数变量的作用主要用于脚本的传参. 位置參数变量的名称和作用都是确定不能改变的,但是该变量的内容是可以更改的,也就是变 ...

随机推荐

  1. LGP4456题解

    我就是不用矩阵快速幂! 题意:一个 \(\rm 01\) 序列为合法的当且仅当没有两个相邻的 \(1\),若 \(1\) 的个数为 \(x\),\(0\) 的个数为 \(y\),这个 \(\rm 01 ...

  2. CF809E题解

    给定一个排列 \(a_i\) 和一棵树,求: \[\frac 1 {n(n-1)}\sum_{i=1}^n\sum_{j=1}^n \varphi(a_i \times a_j) \times dis ...

  3. CentOS 8 EOL如何切换源?

    镜像下载.域名解析.时间同步请点击 阿里巴巴开源镜像站 CentOS 8操作系统版本结束了生命周期(EOL),Linux社区已不再维护该操作系统版本.建议您切换到Anolis或Alinux.如果您的业 ...

  4. 常用正则表达式与python中的re模块

    正则表达式是一种通用的字符串匹配技术,不会因为编程语言不一样而发生变化. 部分常用正则表达式规则介绍: . 匹配任意的一个字符串,除了\n * 匹配任意字符串0次或者任意次 \w 匹配字母.数字.下划 ...

  5. Azure DevOps (六) 通过FTP上传流水线制品到Linux服务器

    上一篇我们实现了把流水线的制品保存到azure的流水线制品仓库里去,本篇我们会开始研究azure的发布流水线. 本篇要研究的是把流水线仓库的制品发布到任意一台公网的linux服务器上去,所以我们先研究 ...

  6. Spring Cloud Alibaba分布式事务组件 seata 详解(小白都能看懂)

    一,什么是事务(本地事务)? 指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行. 简单的说,事务就是并发控制的单位,是用户定义的一个操作序列.      而一个逻辑工作单元要成 ...

  7. 架构师成长之路也该了解的新一代微服务技术-ServiceMesh(上)

    架构演进 发展历程 我们再来回顾一下架构发展历程,从前往后的顺序依次为单机小型机->垂直拆分->集群化负载均衡->服务化改造架构->服务治理->微服务时代 单机小型机:采 ...

  8. Java并发编程虚假唤醒问题(生产者和消费者关系)

    何为虚假唤醒: 当一个条件满足时,很多线程都被唤醒了,但是只有其中部分是有用的唤醒,其它的唤醒都是无用功:比如买货:如果商品本来没有货物,突然进了一件商品,这是所有的线程都被唤醒了,但是只能一个人买, ...

  9. 初识$router和$route

    初识\(router和\)route 一.前言 ​ vue框架中单页面富应用可以说是其最大的优点功能之一了,应用起来简单直观,说起单页面富应用那就必须得联想到\(router**,但是在项目开发过程中 ...

  10. python模块相互依赖的解决方案

    第一种:将相互依赖的文件中的其中一个文件的代码移植到另一个文件中... 第二种:将 import .... 或 from ... import 语句的位置移动到def函数内部,由于import和fro ...