天天看点

Linux 三剑客之sed

Linux 三剑客之sed

Linux 三剑客之sed 及其 sort命令,uniq命令、cut命令、tr命令、wc命令,“草鸡”详细,看完不会包会!

目录

Linux 三剑客之sed

命令补充:

sort命令

uniq命令

cut命令

tr命令

wc命令

三剑客 - sed

编辑模式:

定位分类:

实例如下:

d模式——删除模式

p模式——打印

a模式,在当前行后添加一行或多行

i模式,在指定行前一行插入

c模式,替换当前行

r模式,在文件中读内容

w模式,将指定行写入文件

y模式,将字符替换成另外一个

s模式,字符串转换

g模式,全部执行

i模式,忽略大小写

&的使用

练习:

Linux 三剑客之sed
对文本文件的内容,以行为单位来排序,比较原则是从一行的首个字符依次向后,按照字符对应的ASCII码值进行比较,默认升序

格式:<code>sort [参数] [-o 输出文件]</code>

参数:

<code>-b</code>: 不包括开头的空白字符,从第一个可见字符比较

<code>-n</code>:按照数值的大小排序

<code>-r</code>:以相反的顺序来排序

<code>-t&lt;分隔字符&gt;</code> : 指定排序时所用的栏位分隔字符

<code>-o&lt;输出文件&gt;</code> : 将排序后的结果存入指定的文件

<code>-k</code>: 选择以哪个列进行排序

<code>-f</code>: 排序时,忽略大小写字母

<code>-u</code>:排序过程中去除重复的行

实例如下:

用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用

格式:<code>uniq [参数] [文件]</code>

<code>-c</code>: 在输出行前面加上每行在输入文件中出现的次数

<code>-d</code>:仅显示重复出现的行列

<code>-u</code>:仅显示不重复行列

cut命令用来输出每一行中的指定部分,删除(剪切)文件中指定字节,字段

格式:<code>cut [-b/c/f] [file]</code>

定位方法:

<code>-b</code>:字节

<code>-c</code>:字符

<code>-f</code>:域

注.必须指定-b,-c,-f其中一种

<code>-b</code>:以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志

<code>-c</code>:以字符为单位进行分割

<code>-d</code>:自定义分隔符,默认为制表符(Tab)

<code>-f</code> :与<code>-d</code>一起使用,指定显示哪个区域

<code>-n</code>:取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<code>&lt;br /&gt;</code>范围之内,该字符将被写出;否则,该字符将被排除。

-b字节(英文数字)模式如下
-c模式字符(汉字可用)如下:
-f模式,-b和-c只能在固定格式的文档中提取信息,而对于非固定格式的信息则束手无策,这时候使用-f模式,在使用的时候注意设置间隔符
用一个字符来替换另一个字符,或者可以完全删除一些字符,替换等

格式:<code>tr [OPTION]... SET1 [SET2]</code>

<code>-c</code> :用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。

<code>-d</code>:删除指令字符

<code>-s</code>:缩减连续重复的字符成指定的单个字符

<code>-t</code>:削减 SET1 指定范围,使之与 SET2 设定长度相等

wc指令可以计算文件的字节数,词数,或者列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。 注:在Linux系统中,一段连续的数字或字母组合为一个词 在默认的情况下,wc将计算指定文件的行数、字数,以及字节数

格式:<code>wc [OPTION]... [FILE]...</code>

<code>-c</code>:统计文件的字节(Bytes)数

<code>-l</code>:统计文件的行数

<code>-w</code>:统计文件中的单词个数,默认以空白字符作为分隔符

sed,三大剑客之一,sed是一款流媒体编辑器,用来对文本进行过滤,修改操作等 注:grep用来过滤文本,sed用来修改文本,awk用来处理文本

格式:<code>sed [参数] '处理规则' [操作对象]</code>

<code>-e</code>:允许多个脚本被执行,多项编辑

<code>-n</code>:取消默认输出,就是静默输出

<code>-i</code>:就地编辑,直接修改源文件(慎用)

<code>-r</code>:使用拓展正则表达式(和egrep一样)

<code>-f</code>:指定sed匹配规则脚本文件

<code>d</code>:删除模式

<code>p</code>:打印(P打印第一行)

<code>a</code>:在当前行后添加一行或多行

<code>i</code>:在当前行上一行插入文本(直接修改,原文内容 也会更改)

<code>r</code>:从文件中读取

<code>w</code>:将指定行写入文件

<code>y</code>:将字符转换成另一个字符

<code>s</code>:替换指定的字符(每一行只替换一次)

<code>g</code>:获得内存缓冲区的内容,并替代当前,相当于全部执行

<code>i</code>:忽略大小写(和s模式一起使用的时候,不是单独使用)

<code>&amp;</code>:已经匹配字符串标记

定位:(使用两个斜线)

数字定位:<code>sed ‘行号+模式’ file</code> -- 指定行定位

正则定位:<code>sed ‘正则+模式’ file</code>-- 正则指定开头内容

数字和正则定位:<code>sed ‘数字,正则+模式’ file</code> -- 指定行,和开头

正则和正则定位:<code>sed ‘正则,正则+模式’ file</code> -- 指定以g和k开头

处理规则可以使用正则,也可以使用-f指定文件

👉[正则个人总结](python 正则表达式 - HammerZe - 博客园 (cnblogs.com))

👉[cut命令参考博文]((38条消息) Linux字符截取命令-cut_小工匠-CSDN博客_cut命令)

👉[tr命令参考](Linux tr命令 | 菜鸟教程 (runoob.com))