Linux7.6 学习笔记 第十一章:Linux中的三剑客

Linux 7.6

第十一章:Linux中的三剑客

文章目录

  • Linux 7.6
  • 一.普通剑客
  • 二.一号剑客:grep
  • 三.二号剑客:sed
    • 3.1 简介
    • 3.2 运行方式
    • 3.3 语法
  • 四.三号剑客:awk


Linux中的三剑客就是Linux中的三个重要的命令,主要是对文本进行操作处理。

一.普通剑客

  • cut
    • 用指定的规则来切分文本
cut -d ':' -f1,2,3 文件名
//单引号里面是切分的标准,这里以:来切分
//-f1,2,3是只切分显示前三列 

Linux7.6 学习笔记 第十一章:Linux中的三剑客_第1张图片

  • sort
    • 对文本中的行进行排序
sort 文件名//默认为按照首字母的字符排序,若首字母相同则从第二个字符开始,以此类推。
sort -t ':' -kN 文件名//对每一行的数据以单引号中的:进行切分,按照第N列进行排序
//这里的排序是按照字符来排序而非数字大小,就譬如说11的第二位字符1比1000的第二位字符0大,所以11应该排在排在1000后面

Linux7.6 学习笔记 第十一章:Linux中的三剑客_第2张图片

sort -t ': '-kN -r(reverse) 文件名//逆序
sort -t' '-k2 -n(number) 文件名//按照数值大小进行排序,如果有字母,字母在前
  • wc(word count)
    • 统计单词的数量
wc 参数 文件名
//结果显示的分别为-l(line)行数,-w(word)单词数,-c(char)字符数,文件名
//可以加入参数选项,单独查询三项数值中的某一项

在这里插入图片描述

  • 参数
    • -l line
    • -w word(以空格来区分单词)
    • -c char

二.一号剑客:grep

  • 对文本内容进行搜索
  • 可以同时搜索多个文件,如果是搜索多个文件,grep 命令的搜索结果只显示文件中发现匹配模式的文件名;而如果搜索单个文件,grep 命令的结果将显示每一个包含匹配模式的行
  • 语法
grep [选项] 模式 文件名 //模式:字符(串)or正则表达式
  • 参数
    • -c :仅列出文件中包含模式的行数。
    • -i :忽略模式中的字母大小写。
    • -l :列出带有匹配行的文件名。
    • -n :在每一行的最前面列出行号。
    • -v :列出没有匹配模式的行。
    • -w :把表达式当做一个完整的单字符来搜寻,忽略那些部分匹配的行。
  • 例:
grep 查询内容 文件1 文件2 文件N
//和whereis和find相比,这个grep查询的是文件里面的文本内容,前两者查找的是文件名
grep -n 查询内容 文件N//显示匹配的行号
grep -nvi school passwd --color=auto//显示不匹配的忽略大小写,颜色可以修改
grep -E "[1-9]+" passwd --color=auto//使用正则表达式匹配
//正则表达式是描述一组字符串的一个模式
//正则表达式的构成模仿了数学表达式,通过使用操作符将较小的表达式组合成一个新的表达式

Linux7.6 学习笔记 第十一章:Linux中的三剑客_第3张图片

三.二号剑客:sed

3.1 简介

  • sed(Stream Editor,字符流编辑器)简称流编辑器
  • sed 命令是利用脚本来处理文本文件,其主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

3.2 运行方式

  • 当处理数据时,sed软件从文件或管道中读取一行,处理一行,输出一行,重复这个过程,直到将文件中所有数据处理完毕。
  • 一次一行的设计使得sed软件性能很高
  • 根据提供的规则命令匹配并修改数据。注意,sed 默认不会直接修改源文件数据,而是会将数据复制到缓冲区中,修改也仅限于缓冲区中的数据;

3.3 语法

  • sed 命令的基本格式如下:
sed [参数] '脚本命令' 文件名
  • 参数
    • -n :默认情况下,sed 会在所有的脚本指定执行完毕后,会自动输出处理后的内容,而该选项会屏蔽文本内容,需使用 print 命令来完成输出。
    • -i :此选项会直接修改源文件,不输出。
  • 脚本命令
    • -e :该选项会将其后跟的脚本命令添加到已有的命令中。
    • -f :该选项会将其后文件中的脚本命令添加到已有的命令中。
  • 行—选择模式(脚本命令处输入)
    • N :第十行
    • m,n :第m行到第n行[m,n]
    • m,+n :第m行到第m+n行[m,m+n]
    • m~n :从m行开始,接下来每次间隔n行重复
    • m,$ :从m开始到最后一行
    • /a/ :匹配到a的行
    • /u1/,/u4/ :从匹配u1的行到匹配u4的行之间的每一行

Linux7.6 学习笔记 第十一章:Linux中的三剑客_第4张图片

  • 增加内容(a.append,i,insert)
sed ’行—选择模式a 增加内容' 文件名//在选择的行下面另起一行增加内容
sed ‘行—选择模式i 增加内容' 文件名//在选择的行上面另起一行增加内容
//例
sed '2a ===' passwd//在passwd第2行后面增加一行的内容为===
  • 删除内容(d.delete)
sed ’行—选择模式d' 文件名/删除选择的行
//例
sed '3,10d' passwd//删除passwd中的3-10行
  • 修改内容

整行替换

sed ’行—选择模式c 替换的内容' 文件名//替换选择的行
//例
sed '3,10c aaaaaa' passwd//将passwd文件中的第3-10行的内容删除后增加一行aaaaaa

字符替换

  • 语法
sed [参数] ’行—选择模式s/替换的内容/新内容/flags‘ 文件名
flags 标记 功能
N 范围:1~512,表示指定要替换的字符串出现第几次时才进行替换
g 对数据中所有匹配到的内容进行替换,如果没有 g,则只会在第一次匹配成功时做替换操作
p 会打印与替换命令中指定的模式匹配的行。此标记通常与 -n 选项一起使用
w file 将缓冲区中的内容写到指定的 file 文件中
& 用正则表达式匹配的内容进行替换
\n 匹配第 n 个子串,该子串之前在 pattern 中用 () 指定
\ 转义(转义替换部分包含:&、\ 等)
 sed '2,5s/a/b/2' passwd
 //将passwd文件中的第2-5行中每行的第二个a改为b
 sed '2,5s/a/b/g' passwd
 //将passwd文件中的第2-5行中所有的a改为b
 sed -n '2,5s/a/b/p' passwd
 //-n 参数会禁止 sed 输出,但 p 标记会输出修改过的行,将二者结合使用的效果就是只输出被替换命令修改过的行
 //将passwd文件中的第2-5行中所有的a改为b,并且只显示出被修改后的行
 sed '2,5s/a/b/w test.txt' passwd
 //w 标记会将匹配后的结果保存到指定文件中,类似于将sed -n '2,5s/a/b/p' passwd的结果存储在另一个文件中
 //将passwd文件中的第2-5行中所有的a改为b,并且只把被修改后的行存储在test.txt中
 sed 's/\/bin\/bash/\/bin\/csh/' /etc/passwd
//在使用 s 脚本命令时,替换类似文件路径的字符串会比较麻烦,需要将路径中的正斜线进行转义,例如:

四.三号剑客:awk

  • 这是一门很强大的语言,一般我们用这个去获取虚拟机IP地址。具体用到时候去查找具体的命令。
  • awk 的强大之处在于脚本命令,它由 2 部分组成,分别为匹配规则和执行命令,和 sed 命令类似,awk 命令也是逐行扫描文件(从第 1 行到最后一行),寻找含有目标文本的行,如果匹配成功,则会在该行上执行用户想要的操作;反之,则不对行做任何处理。
  • 语法
awk [参数] '脚本命令' 文件名
  • 参数
参数 含义
-F fs 指定以 fs 作为输入行的分隔符,awk 命令默认分隔符为空格或制表符
-f file 从脚本文件中读取 awk 脚本指令,以取代直接在命令行中输入指令
-v var=val 执行处理过程之前,设置一个变量 var,并给其设备初始值为 val
  • 模式与动作
awk -F":"'NR>=2&&NR<=6'/etc/passwd
awk -F ":"'{print NR,$1 }' /etc/passwd
awk -F ":"'NR>=2&&NR<=6 {print NR,$1}' /etc/passwd
awk -F":"'NR==1{print NR,$1}NR==2{print NR,$NF}' /etc/passwd

你可能感兴趣的:(Linux,linux,学习,运维)