何为Linux三剑客?

  1. 第一个剑客是 grep,grep 会根据正则表达式查找相关内容并打印对应的数据。
  2. 第二个剑客是 awk,awk 的名字来源于三个作者的名字简称,它可以根据定位到的数据行处理其中的分段。
  3. 第三个剑客是 sed,它是 stream editor 流式编辑器的简称,可以定位到数据行并对数据进行增删改查操作。
  4. 提到三剑客首先不得不提和三剑客组合的正则表达式了。

正则表达式

通配符 功能
c* 将匹配 0 个(即空白)或多个字符 c(c 为任一字符)。
. 将匹配任何一个字符,且只能是一个字符。
[xyz] 匹配方括号中的任意一个字符。
[^xyz] 匹配除方括号中字符外的所有字符。
^ 锁定行的开头。
$ 锁定行的结尾。

需要注意的是,在基本正则表达式中,如通配符 *、+、{、|、( 和 )等,已经失去了它们原本的含义,而若要恢复它们原本的含义,则要在之前添加反斜杠 \,如 *、+、{、|、( 和 )。

Linux三剑客之Grep

grep是Linux下通用的文本内容查找命令

grep [选项] [匹配名] [路径]

选项与参数:

  • -c :计算找到 '搜寻字符串' 的次数
  • -i :忽略大小写
  • -n :输出行号
  • -v :反向选择,亦即显示出没有'搜寻字符串' 内容的那一行。
  • --color=auto :可以将找到的关键词部分加上颜色显示。

示例:

grep root /etc/passwd # 将/etc/passwd,有出现root的行取出来 等同于cat /etc/passwd | grep root



grep test aa bb cc #显示在aa,bb,cc文件中匹配test的行



grep -v 'xxx' a.txt #指显示不包含xxx的行或文件



grep -r print test/ #递归搜索test目录下包括print字符串的行



grep -n '[set]' 1.sh #匹配[]内任意一个或多个字符串的行



grep -n '[0-9]' 1.sh # 匹配有数字的行



grep -n '^d' 1.sh #匹配d开头的行



grep -n 'x$' 1.sh #匹配x结尾的行

Linux三剑客之Awk

AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。

之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。

语法:

awk [options] 'script' var=value file(s)

awk [options] -f scriptfile var=value file(s)

常用参数:

  • -F,用于指定输入分隔符
  • -v,用于设置变量的值

常用内置变量:

  • $0 : 表示整个输入记录,当前整行字符串.
  • $n : 表示当前输入记录的第 n 个域,这些域之间由 FS 分割,当前行的第n段。
  • NF: number of Field,当前行的字段的个数(即当前行被分割成了几列),字段数量。
  • NR: 行号,当前处理的文本行的行号。
  • FNR: 各文件分别计数的行号。
  • FS: 输入字段分隔符, 默认为空白字符。
  • OFS: 输出字段分隔符, 默认为空白字符。
  • FILENAME: 当前文件名。
  • RS: 输入记录分隔符(输入换行符), 指定输入时的换行符
  • ORS: 输出记录分隔符(输出换行符),输出时用指定符号代替换行符

示例:

awk -F: '{print $1}' /etc/passwd #通过:分割查看第一列数据

awk -F: '{print$1,$3,$6}' /etc/passwd #输出字段1,3,6, 以制表符作为分隔符

awk -F: '{print NF}' /etc/passwd # 显示每行有多少字段

awk -F: 'NR==5{print}' /etc/passwd # 打印出/etc/passwd文件中的第5行

awk -F: 'NR>2 && NR<6{print}' /etc/passwd #打印/etc/passwd文件中的3至5行

awk -F: '/root/{print}' /etc/passwd # 打印出文件中含有root的行

awk -F: '!/root/{print}' /etc/passwd #打印出文件中不含root的行

awk -F: '/root|bash/{print}' /etc/passwd #打印文件含有root或者bash的行

awk -F: '$1~/root/{print}' /etc/passwd #打印第一个字段是root的行

cat /etc/passwd | awk 'NR>2 && NR>10' #查看test.txt文件内第2到第10行的内容

ifconfig eth0 | grep inet | awk '{print$2}' | awk 'NR==1{print}' #查看linux eth0的ip地址

Linux三剑客之sed

sed的命令格式:sed [options] 'command' file(s)

选项:

✓ -e :直接在命令行模式上进行sed动作编辑,此为默认选项;

✓ -f :将sed的动作写在一个文件内,用–f filename 执行filename内的sed动作;

✓ -i :直接修改文件内容;

✓ -n :只打印模式匹配的行

动作说明:

✓ a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~

✓ c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!

✓ d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;

✓ i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);

✓ p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~

✓ s :取代,可以直接进行取代!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦

1、替换操作:s命令 ◆ sed 's/book/books/' file # 替换文本中的字符串

◆ sed -n 's/test/TEST/p' file #-n选项和p命令一起使用表示只打印那些发生替换的行

◆ sed -i 's/book/books/g' file # 直接编辑文件选项-i,会匹配file文件中每一行的第一个book替换为books

◆ sed 's/book/books/g' file # 使用后缀 /g 标记会替换每一行中的所有匹

2、删除操作:d命令

◆ sed '/^$/d' file #删除空白行

◆ sed '2d' file # 删除文件的第2行

◆ sed '2,$d' file # 删除文件的第2行到末尾所有行

◆ sed '$d' file # 删除文件最后一行

◆ sed '/^test/'d file # 删除文件中所有开头是test的

3、其它

◆ sed -e '1,5d' -e 's/test/check/' file # 多点编辑,上面sed表达式的第一条命令删除1至5行,第二条命令用check替换test

◆ sed -n '5,/^test/p' file #打印从第5行开始到第一个包含以test开始的行之间的所有行

◆ sed '/test/r file' filename # file里的内容被读进来,显示在与test匹配的行后面

◆ sed -n '/test/w file' example # 在example中所有包含test的行都被写入file里

◆ sed '/^test/a\this is a test line' file # 将 this is a test line 追加到 以test 开头的行后面

◆ sed -i '2a\this is a test line' test.conf # 在 test.conf 文件第2行之后插入 this is a test line

◆ sed '1,10y/abcde/ABCDE/' file # 把1~10行内所有abcde转变为大写

Linux三剑客grep、awk、sed的更多相关文章

  1. Linux三剑客-grep || awk || sed

    grep是一个强大的文本搜索工具 命令格式: grep [option] pattren file -a  将二进制文档以文本方式处理 -c  计算找到的符合行的次数 -i  忽略大小写 -n  顺便 ...

  2. 【linux系统】命令学习(五)linux三剑客 grep \ awk \ sed

    grep----基于正则表达式查找满足条件的行 1.内容检索 获取行 grep pattern file 获取内容 grep -o pattern file 获取上下文grep -A -B -C pa ...

  3. linux三剑客grep,sed,awk

    grep 官方帮助文档 Usage: grep [OPTION]... PATTERN [FILE]... Search for PATTERN in each FILE or standard in ...

  4. Linux三剑客grep、sed、awk

    grep grep file grep -i file grep -v file

  5. linux shell grep/awk/sed 匹配tab

    处理文件的命令实在是多, sed, awk, grep等.遇到了需要匹配tab的情况, 记录一下. 例子如下:找出文本中第一列是1的行. 文本a 解法1 : 直接使用正则表达式, ^表示开头, \t表 ...

  6. Linux三剑客grep、awk和sed

    grep,sed 和 awk是Linux/Unix 系统中常用的三个文本处理的命令行工具,称为文本处理三剑客.本文将简要介绍这三个命令并给出基本用法. 管道 在介绍这两个命令之前,有必要介绍一下Uni ...

  7. Linux实战教学笔记18:linux三剑客之awk精讲

    Linux三剑客之awk精讲(基础与进阶) 标签(空格分隔): Linux实战教学笔记-陈思齐 快捷跳转目录: * 第1章:awk基础入门 * 1.1:awk简介 * 1.2:学完awk你可以掌握: ...

  8. (转)不看绝对后悔的Linux三剑客之awk实战精讲

    原文:http://blog.51cto.com/hujiangtao/1923930 一.Linux三剑客之awk命令精讲 第1章 awk基础入门 1.1 awk简介 awk不仅仅时linux系统中 ...

  9. 磁盘分区 & Linux 三剑客之 awk

    今日内容 磁盘分区 Linux 三剑客之 awk 内容详细 一.磁盘分区 磁盘分区 --> 挂载 步骤 1.关机 2.添加硬盘 3.创建分区 fdisk /dev/sdb or gdisk /d ...

随机推荐

  1. ams1117资料汇总

    AMS1117系列稳压器有可调版与多种固定电压版,设计用于提供1A输出电流且工作压差可低至1V.在最大输出电流时,AMS1117器件的最小压差保证不超过1.3V,并随负载电流的减小而逐渐降低. AMS ...

  2. 华为云FusionInsight湖仓一体解决方案的前世今生

    摘要:华为云发布新一代智能数据湖华为云FusionInsight时再次提到了湖仓一体理念,那我们就来看看湖仓一体的来世今生. 伴随5G.大数据.AI.IoT的飞速发展,数据呈现大规模.多样性的极速增长 ...

  3. vim-配置教程+源码

    目录 概念 前言 参考链接 vim 优点 vim 配置 vim 配置方法一 vim 配置方法二 自动添加文件头 一般设置 插件 ** 映射 YouCompleteMe 插件 其它配置 概念 前言 放弃 ...

  4. 一个名为不安全的类Unsafe

    最近为了更加深入了解NIO的实现原理,学习NIO的源码时,遇到了一个问题.即在WindowsSelectorImpl中的 pollWrapper属性,当我点进去查看它的PollArrayWrapper ...

  5. 为什么重写 equals() 方法,一定要重写 hashCode() 呢?| HashMap

    微信搜索「码农田小齐」,关注这个在纽约的程序媛,回复「01-05」可以获取计算机精选书籍.个人刷题笔记.大厂面经.面试资料等资源,么么哒- 首先我们有一个假设:任何两个 object 的 hashCo ...

  6. 内网渗透 day7-linux信息收集

    linux信息搜集 目录 1. linux信息搜集 2. nmap漏洞复现 3. msf linux模块反弹shell 1. linux信息搜集 id 查看当前用户的权限和所在的管理组 python ...

  7. 各种编程语言忽略http的SSL证书认证

    目录 前言 代码 go语言 Python语言 Ruby语言 Java语言 PHP语言 C#语言 前言 我们内部测试的http服务器很多时候证书都是没有经过第三方认证的,我们发送http请求基本上都是忽 ...

  8. haproxy 思考

    通过代理服务器在两个TCP接连之间转发数据是一个常见的需求,然后通常部署的时候涉及到(虚拟)服务器.真实服务器.防护设备.涉及到多个ip地址相关联,改动一个IP就需要修改配置. 比如反向服务器部署的时 ...

  9. 一、智能指针及线程同步总结------linux多线程服务端编程

    更新2.0 二.多线程及服务器编程总结------linux多线程服务端编程 https://www.cnblogs.com/l2017/p/11335609.html 三.分布式编程总结------ ...

  10. Fiddler的一系列学习瞎记(没有章法的笔记)

    前言: 工作上要接触很多移动设备,进行测试,所以抓包软件不能少,但是看你习惯,你要是说我喜欢charles,也可以,毕竟我也买不起苹果电脑,就不拿charles装在windows上了,还是乖乖的Fid ...