大纲:

一、sed基本编程

sed详解、Usage、操作实例

二、cut命令应用

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

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

一、sed基本编程

1、sed详解

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

sed--->流编辑器 stream editor

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

sed命令运行流程:

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

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

3.1.2 删除第一行

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

3.1.3 删除3-最后一行

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

3.1.4 删除root的行

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

3.1.5 删除1-4行

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

3.2 输出root开头的行

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

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

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

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

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

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

3.4 在行前追加

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

3.5 另存为

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

3.6 查找并替换

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

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

实战:

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

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

2、设置IP

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

二、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

3.2 过滤字符

3.3 过滤汉字 -c

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

3.4 过滤显示区域

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

1-27 sed基本编程和cut基本应用的更多相关文章

  1. 『忘了再学』Shell基础 — 27、AWK编程的介绍和基本使用

    目录 1.AWK介绍 (1)AWK概述 (2)printf格式化输出 (3)printf命令说明 2.AWK的基本使用 (1)AWK命令说明 (2)AWK命令使用 1.AWK介绍 (1)AWK概述 A ...

  2. UNIX环境编程学习笔记(27)——多线程编程(二):控制线程属性

    lienhua342014-11-09 1 线程属性概括 POSIX 线程的主要属性包括 scope 属性.detach 属性.堆栈地址.堆栈大小.优先级.在头文件 pthread.h 中定义了结构体 ...

  3. What skills are needed for machine learning jobs

    What skills are needed for machine learning jobs?机器学习工作必须技能 原文: http://www.quora.com/Machine-Learnin ...

  4. BASH的保护性编程技巧

    BASH的保护性编程技巧   shell常用逻辑判断 -b file 若文件存在且是一个块特殊文件,则为真 -c file 若文件存在且是一个字符特殊文件,则为真 -d file 若文件存在且是一个目 ...

  5. linux系列之-—01 shell编程笔记

    一.特殊变量($0.$1.$2. $?. $# .$@. $*) shell编程中有一些特殊的变量可以使用.这些变量在脚本中可以作为全局变量来使用. 名称 说明 $0 脚本名称 $1-9 脚本执行时的 ...

  6. SED总结, mac上要加备份文件名,sort命令和对中文的处理

    使用sed批量改文件名 Sed批量去拓展名 |- dev.gb.conll06.raw |- test.gb.conll06.raw |- train.gb.conll06.raw 想要去掉其中的后缀 ...

  7. 大牛推荐的30本经典编程书籍,从Python到前端全系列。

    注:为了方便阅读与收藏,我们也制作了30本书籍完整清单的Markdown.PDF版以及思维导图版,大家可以在实验楼公众号后台回复关键字"书籍推荐"获取. Python 系列(10本 ...

  8. Linux文本处理工具——Sed

    sed:数据流编辑器: awk:报告文本的生成器 sed 基本用法:(Stream EDitor) Stream 流 EDitor 编辑器 行编辑器 全屏编辑器:vi/vimsed:内存空间(模式空间 ...

  9. 面向对象编程案例02--显示地调用父类的__init__()

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #面向对象编程案例02--显示地调用父类的__init__() ''' 继承是面向对象的重要特征之一,继承是2 ...

随机推荐

  1. 关于手机适配中的rem的学习随笔

    githup 下载地址 :https://github.com/comjustforfun/remformobile adaptivejs利用rem解决移动端页面开发的自适应问题 页面模板初始化的时候 ...

  2. (转 )C++ static、const和static const 以及它们的初始化

    const定义的常量在函数执行之后其空间会被释放,而static定义的静态常量在函数执行后不会被释放其空间.但不论是Const还是static  他们定义的内容都会随着程序的结束而被系统清楚. sta ...

  3. php.ini优化,,,php-fpm

    无论是apache还是nginx,php.ini都是合适的.而php-fpm.conf适合nginx+fcgi的配置. 1)打开PHP的安全模式 PHP的安全模式是个非常重要的PHP内嵌的安全机制,能 ...

  4. 核心动画(CAKeyframeAnimation,CABasicAnimation)

    一,核心动画常用的三种例子 view的核心动画其体现就是把view按照指定好的路径进行运动,针对的是view的整体. [view.layer addAnimation:动画路径 forKey:@“绑定 ...

  5. python数据描述符

    Python的描述符是接触到Python核心编程中一个比较难以理解的内容,自己在学习的过程中也遇到过很多的疑惑,通过google和阅读源码,现将自己的理解和心得记录下来,也为正在为了该问题苦恼的朋友提 ...

  6. DevStore分享:月薪3万的程序员都避开了哪些坑

    程序员薪水有高有低,有的人一个月可能拿30K.50K,有的人可能只有2K.3K.同样有五年工作经验的程序员,可能一个人每月拿20K,一个拿5K.是什么因素导致了这种差异?我特意总结了容易导致薪水低的九 ...

  7. motan rpc

    git :  帮助 文档 基本介绍 Motan是一套基于java开发的RPC框架,除了常规的点对点调用外,Motan还提供服务治理功能,包括服务节点的自动发现.摘除.高可用和负载均衡等.Motan具有 ...

  8. Python- discover()方法与执行顺序补充

    可以根据不同的功能创建不同的测试文件,甚至是不同的测试目录,测试文件中还可以将不同的小功能划分为不同的测试类,在类下编写测试用例,让整体结构更加清晰 但通过addTest()添加.删除测试用例就变得非 ...

  9. JS正则表达式从入门到入土(3)—— 范围类

    范围类 在使用正则表达式时,很多时候,我们会想要匹配a~z的所有字母,很多人想到,可以使用字符类[abcdefg...z],但是,这种方法需要输入所有需要匹配的字母.那么,有没有简单点的方法呢? 所幸 ...

  10. 单元测试工具Nunit

    原文链接:http://blog.csdn.net/snowshinoy/article/details/6951352 调试 附加到: nunit-agent.exe进程: