1-27 sed基本编程和cut基本应用

Posted 小甘丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1-27 sed基本编程和cut基本应用相关的知识,希望对你有一定的参考价值。

大纲:

一、sed基本编程

sed详解、Usage、操作实例

二、cut命令应用

cut命令详解、Usage、操作实例

########################################################

一、sed基本编程

1、sed详解

vim编辑器入门难,但是功能很强大,不过需要交互式使用。不适合脚本中操作文本文件。

sed--->流编辑器 stream editor

sed文本编辑器,可操作文本,它是按行进行,逐行处理。(默认不直接修改源文件,而是将编辑的行,读取到内存-->内存空间or模式空间,在内存中编辑后,输出到屏幕上)

sed命令运行流程:

将要编辑的行读取到内存,判断是否匹配模式,若匹配,则sed将进行编辑,并将结果输出到屏幕,若不匹配,则将下一个要编辑的行读取到内存,依次循环到文件结尾。

wps7C85.tmp

2、Usage

Usage: sed [OPTION] AddressCommand修饰符 file... file...

sed [OPTION]... {script-only-if-no-other-script} [input-file]...

注意Address与Command,还有修饰符之间没有空格

OPTIONS:

-n #只显示匹配的行

-i #直接修改源文件

-e #多个操作同时进行add the script to the commands to be executed

Address:

LineNumber   #指定特定的行 ($最后一行)

Start,End    #指定范围,从第Start行到第End行

/^root/     #正则表达式 在sed中,若要使用匹配模式为正则表达式时,需/[正则]/

mode1,mode2   #从第一次匹配mode1行开始,到第一次匹配mode2行结束

StartLine,+n  #从第StartLine行开始,往后的n行

Command:

d  #删除匹配的行

p  #打印匹配的行

a\\ #在匹配的行前插入内容

i\\ #在匹配的行后插入内容

r file #读取文件到匹配的行

w file #将匹配的行保存到文件

s/模式/字符/  #替换匹配的模式为字符  符号/可以使用任意字符

例如: s/root/gan/ ---等价--->  s@root@gan@ 等等

修饰符

g #替换全部匹配模式

i #忽略大小写

3、操作实例

3.1.1 删除/etc/passwd 前两行

[root@xiaogan122 ~]# sed \'1,2d\' /etc/passwd

wps7CA5.tmp

3.1.2 删除第一行

[root@xiaogan122 ~]# sed \'1d\' /etc/passwd

wps7CA6.tmp

3.1.3 删除3-最后一行

[root@xiaogan122 ~]# sed \'3,$d\' /etc/passwd

wps7CA7.tmp

3.1.4 删除root的行

[root@xiaogan122 ~]# sed \'/^root/d\' /etc/passwd

wps7CB7.tmp

3.1.5 删除1-4行

[root@xiaogan122 ~]# sed \'1,+4d\' /etc/passwd

wps7CB8.tmp

3.2 输出root开头的行

[root@xiaogan122 ~]# sed \'/^root/p\' /etc/passwd

[root@xiaogan122 ~]# sed -n \'/^root/p\' /etc/passwd

wps7CB9.tmp

3.3.1 在指定行后面追加内容一行

[root@xiaogan122 ~]# sed \'/^root/a\\Da Jia Hao\' /etc/passwd

wps7CBA.tmp

3.3.2 在指定行后面追加内容两行

[root@xiaogan122 ~]# sed \'/^root/a\\Da Jia Hao\\nMy name is XiaoGan!\' /etc/passwd

wps7CBB.tmp

3.4 在行前追加

[root@xiaogan122 ~]# sed \'/^root/i\\Da Jia Hao\' /etc/passwd

wps7CCC.tmp

3.5 另存为

[root@xiaogan122 ~]# sed \'/^root/w ./root.txt\' /etc/passwd

wps7CCD.tmp

3.6 查找并替换

[root@xiaogan122 ~]# sed \'/^root/s/root/gan/\' /etc/passwd

wps7CCE.tmp

[root@xiaogan122 ~]# sed \'/^root/s/root/gan/g\' /etc/passwd

wps7CCF.tmp

实战:

1、修改selinux(配置selinux开机自动开启、关闭)

[root@xiaogan122 ~]# sed \'s/SELINUX=disabled/SELINUX=enforcing/\' /etc/sysconfig/selinux
若要将修改保存到文件,则需要使用-i选项,直接修改源文件,(需要注意,当sed -i命令修改的文件是连接文件时,这是链接会被破坏,而直接生成对应的文本文件,这时服务设置可能会失效哦)

wps7CD0.tmp

2、设置IP

[root@xiaogan122 ~]# sed \'s/IPADDR=.*/IPADDR="192.168.171.123"/\' /etc/sysconfig/network-scripts/ifcfg-eno16777736

wps7CE1.tmp

二、cut命令应用

1、cut详解

cut是一个选取命令,就是将一段数据经过分析,取出我们想要的部分。

一般来说,选取信息通常是针对行来进行分析的,并不是对整篇进行分析。

有时我们经常会遇到如下问题:

有一页电话号码簿,上面按顺序规则地写着人名、家庭地址等信息,此时我们只想取出所有人的名字和其对应的电话号码,应该怎样实现呢?

2、Usage

Usage: cut OPTION... [FILE]...

OPTIONS:

-b #以字节为单位进行分割

-c #以字符为单位进行分割

-d #以自定义的方式进行分割

-f #以字段为单位进行分割,与-d结合使用,指定显示区域

3、操作实例

3.1过滤字节

[root@xiaogan122 ~]# who | cut -b 1-4

wps7CE2.tmp

3.2 过滤字符

wps7CE3.tmp

3.3 过滤汉字 -c

-c #以字符为单位进行分割,英文文档与-b没有区别,但是中文文档就不一样了

wps7CE4.tmp

3.4 过滤显示区域

[root@xiaogan122 ~]# cut -d : -f 1 /etc/passwd

wps7CE5.tmp

以上是关于1-27 sed基本编程和cut基本应用的主要内容,如果未能解决你的问题,请参考以下文章

Shell工具cut/sed/awk/sort

Linux三剑客之sed基本应用

7Shell工具 cut sed awk sort

如何将 cut 和 sed 命令应用于 Powershell?

sed教程之基本命令

shell cut 的基本使用