【shell】awk、sed、sort是什么?怎么用?

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

目录

一、AWK

干什么用的

使用起来有什么条件

怎么使用

二、sed

功能

sed怎样读取数据

怎样调用sed

三、sort 

功能是什么

命令有哪些


本文只讲解了一些简略的知识框架如需详细学习附录几本参考书籍百度网盘自行下载

链接https://pan.baidu.com/s/1uqBeL7FF0GiG4EzmWk90sg?pwd=3905 
提取码3905

一、AWK

引言如果要格式化报文或从一个大的文本文件中抽取数据包那么awk可以完成这些任务。

干什么用的

        awk是shell过滤工具之所以要在shell中使用awk是因为awk本身是学习的好例子但结合与其他工具诸如grep和sed将会使shell编程更加容易。

        简言之功能就是过滤和提取通过对源文件读取内容然后进行过滤提取用户感兴趣的字段

使用起来有什么条件

        源文件必须满足如下条件才可被awk过滤和提取内容

        源文件中内容要满足每个都有分隔符且是相同的分隔符。

        如1.2  2.3  3.4这就满足条件分隔符为' . '

怎么使用

        有三种方式调用AWK。

第一种是命令行方式

awk [-F field-separator] 'commands' input-file(s)
  • commands是真正的awk命令
  • -F. 分隔符。因为 a w k使用空格作为缺省的域分隔符因此如果 要浏览域间有空格的文本不必指定这个选项但如果要浏览诸如 p a s s w d文件此文件各域 以冒号作为分隔符则必须指明 - F选项.

         第二种方法是将所有awk命令插入一个文件并使 awk程序可执行然后用awk命令解释 器作为脚本的首行以便通过键入脚本名称来调用它。

        第三种方式是将所有的awk命令插入一个单独文件然后调用

awk -f awk-script-file input-files(s)

        -f 选项指明在文件 awk _script _ file中的awk脚本input _ file( s )是使用awk进行浏览的文件名。

示例

        获源文件中的整数部分通过下面圈红的命令实现其中print:打印 '{}' awk的命令file是源文件‘>’ 是重定向新创建newfile文件将内容输入到该文件内如果不写就是打印到屏幕上。而$1就是文件的第一列。

         若要获取小数部分通过$2得到

获取下面标红的第一行

        可以用管道grep结合awk进行筛选其中间隔符是空格因此直接不写.F-v 取反 不要XXX的意思。

        或者用这种方式第1列必须是ubantu对其筛选$0是打印一整行然后筛选第8行是sleep进行如下筛选也可以


二、sed

功能

        简言之就是对文件进行读取数据和编辑

sed怎样读取数据

        sed从文件的一个文本行或从标准输入的几种格式中读取数据将之拷贝到一个编辑缓冲区然后读命令行或脚本的第一条命令并使用这些命令查找模式或定位行号编辑它。重复此过程直到命令结束。

        修改的是拷贝源文件未发生变化

怎样调用sed

        调用sed有三种方式

  1. 在命令行键入命令
  2. 将sed命令插入脚本文件然后调用sed
  3. 将sed命令插入脚本文件并使sed脚本可执行。

        使用sed命令行格式为

sed [选项] sed命令 输入文件

         在命令行使用sed命令时实际命令要加单引号。sed也允许加双引号。

        使用sed脚本文件格式为

sed [选项] -f sed脚本文件 输入文件 

        要使用第一行具有s e d命令解释器的s e d脚本文件其格式为

sed 脚本文件 [选项] 输入文件 

        不管是使用shell命令行方式或脚本文件方式如果没有指定输入文件sed从标准输入中接受输入一般是键盘或重定向结果。

        sed选项如下

  • n 不打印sed不写编辑行到标准输出缺省为打印所有行编辑和未编辑。
  • p命令可以 用来打印编辑行。
  • c 下一命令是编辑命令。使用多项编辑时加入此选项。如果只用到一条sed命令 此选项无用但指定它也没有关系。
  • f 如果正在调用sed脚本文件使用此选项。此选项通知sed一个脚本文件支持所有的sed命令例如sed -f myscript.sed input_file这里myscript.sed即为支持sed命令的文件。

        基本sed编辑命令如下 

示例

在第二行内添加3.3

附加数据附加到第二行后面

删除第二行

打印第二行、第三行加上-n是不对源文件进行打印


三、sort 

功能是什么

        sort命令将许多不同的域按不同的列顺序分类

命令有哪些

sort -cmu -o output_file [other options] +pos1 +pos2 input_files
  • -c 测试文件是否已经分类
  • -m 合并两个分类文件
  • -u 删除所有复制行
  • -o 存储sort结果的输出文件名
    • - o选项保存分类结果然而也可以使用重定向方法保存。
  • 其他选项
    • -b 使用域进行分类时忽略第一个空格
    • -n 指定分类是域上的数字分类
    • -t 域分隔符用非空格或t a b键分隔域
    • -r 对分类次序或比较求逆
    • +n n为域号。使用此域号开始分类。 n n为域号。在分类比较时忽略此域一般与 + n一起使用。 post1 传递到mn。m为域号n为开始分类字符数例如 46意即以第5域分类从第7 个字符开始。

        最基本的sort方式为sort filename按第一域进行分类分类键 0。实际上读文件时sort操作将行中各域进行比较如下所示

sort分类求逆

         如果要逆向sort结果使用- r选项。在通读大的注册文件时使用逆向sort很方便。

唯一性分类

        有时原文件中有重复行这时可以使用 - u选项进行唯一性不重复分类以去除重复行。对带重复行的文件使用- u选项去除重复行不必加其他选项sort会自动处理。

        如下所示对文件逆序+去重

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: shell

“【shell】awk、sed、sort是什么?怎么用?” 的相关文章