只显示每行的第一个单词

[root@localhost ~]# sed -r 's/([^0-9a-Z]+)(.+)//gp' passwd

root

bin

daemon

adm

打印每行3次:sed 'p;p' passwd 每一个p代表一次打印,如果没有p则打印一遍,之后没多一个p就会多一次打印

[root@localhost ~]# sed 'p;p' passwd

root:x:0:0:root:/root:/bin/bash

root:x:0:0:root:/root:/bin/bash

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

bin:x:1:1:bin:/bin:/sbin/nologin

bin:x:1:1:bin:/bin:/sbin/nologin

把所有大写字母用括号()括起来

[root@localhost ~]# sed -r 's/[A-Z]/(&)/g' passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

ftp:x:14:50:(F)(T)(P) (U)ser:/var/ftp:/sbin/nologin

用制表符替换文件中出现的所有空格

[root@localhost ~]# sed -r 's/ /\t/g' passwd

删除每行开头的所有空格:sed -r 's/^ //g' passwd

删除一个文件中所有的数字:sed -r 's/[0-9]//g' passwd

交换每行的第一个单词和最后一个单词:

sed -r 's/^([a-Z0-9]+)([^a-Z0-9]+)(.+)([^a-Z0-9]+)([a-Z0-9]+)/\5\2\3\4\1/g' passwd

交换每行的第一个字符和第二个单词:

sed -r 's/^(.)([a-Z]+)([^0-9][^a-Z]+)([a-Z]+)([^0-9][a-Z])/\4\2\3\1\5/g' passwd

交换每行的第一个字符和第二个字符:sed -r 's/^(.)(.)/\2\1/g' passwd

删除文件每行的最后一个单词: sed -r 's/([a-Z]+)$' passwd

删除文件每行的倒数第二个单词:

sed -r 's/([a-Z]+)([^0-9][^a-Z])([a-Z]+)$/\2\3/g' passwd

删除文件每行的第二个单词:sed -r 's/^([a-Z])([^0-9][^a-Z])(a-Z)/\1\2/g' passwd

删除文件每行的倒数第二个字符: sed -r 's/(.)(.)$/\2/g' passwd

删除文件每行的最后一个字符:sed -r 's/(.)$//g'

删除文件每行的第二个字符:sed -r 's/^(.)(.)/\2/g' passwd

删除文件每行的第一个字符:sed -r 's/^.//g' passwd

用命令获取格式为 mm/yy/dd 的日期格式,结合管道,将其换成 mm;yy;dd格式

[root@localhost ~]# date "+%m/%y/%d" | sed -r 's/\//\-/g'

06-18-12

打印文件中第一行到4行的内容,且打印行号,当用到sed不同的编辑命令时,用{},且不同编辑命令之间

用分号。

[root@localhost ~]# sed -n '1,4{=;p}' passwd

1

root:x:0:0:root:/root:/bin/bash

2

bin:x:1:1:bin:/bin:/sbin/nologin

3

daemon:x:2:2:daemon:/sbin:/sbin/nologin

4

adm:x:3:4:adm:/var/adm:/sbin/nologin

用!表示对前面的匹配的模式取反

[root@localhost ~]# sed -n '1,2!{=;p}' passwd

3

daemon:x:2:2:daemon:/sbin:/sbin/nologin

4

adm:x:3:4:adm:/var/adm:/sbin/nologin

5

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

6

sync:x:5:0:sync:/sbin:/bin/sync

7

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

打印即匹配root字符的行,也打印匹配sbin字符的行

[root@localhost ~]# sed -n '/root/,/sbin/p' passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

打印从第二行开始匹配到第一次出现root字符的行,root字符行也打印

[root@localhost ~]# sed -n '2,/root/p' passwd

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

打印root行到第1行,由于root处在文件中的第一行位置,则表示只打印一行

[root@localhost ~]# sed -n '/root/,1p' passwd

root:x:0:0:root:/root:/bin/bash

sed的匹配模式支持正则表达式

sed'5 q'/etc/passwd#打印前5行

sed-n '/r*t/p'/etc/passwd#打印匹配r有0个或者多个,后接一个t字符的行

sed-n '/.r.*/p'/etc/passwd#打印匹配有r的行并且r后面跟任意字符

sed-n '/o*/p'/etc/passwd#打印o字符重复任意次

sed-n '/o\{1,\}/p'/etc/passwd#打印o字重复出现一次以上

sed-n '/o\{1,3\}/p'/etc/passwd#打印o字重复出现一次到三次之间以上

用sed打印文件的信息的例子的命令

sed -n '/^#/!p' /etc/vsftpd/vsftpd.conf

sed -n '/^#/!{/^$/!p}' /etc/vsftpd/vsftpd.conf

sed -e '/^#/d' -e '/^$/d' /etc/vsftpd/vsftpd.conf

sed -n '1,/adm/p' /etc/passwd

sed -n '/adm/,6p' /etc/passwd

sed -n '/adm/,4p' /etc/passwd

sed -n '/adm/,2p' /etc/passwd

sed命令可以实现的添加

#1)匹配行的行首添加,添加在同行

#2)匹配行的行中的某个字符后添加

#3)匹配行的行尾添加字符

#4)匹配行的行前面行添加

#5)匹配行的行后面行添加

#6)文件的行首添加一行

[root@jie1 ~]# sed -i '1 i\sed command start' myfile

#7)文件的行尾追加一行

[root@jie1 ~]# sed -i '$a \sed command end' myfile

sed命令实现对文件内容的替换(替换是在shell自动化脚本中用到最多的操作)

[root@jie1 ~]# sed -i '/DEVICE/c\Ethernet' test

#匹配DEVICE的行,替换成Ethernet这行

[root@jie1 ~]# sed -i 's/static/dhcp/' test

#把static替换成dhcp(/,@,#都是前面所说的地址定界符)

[root@jie1 ~]# sed -i '/IPADDR/s@22\.1@10.12@' test

#匹配IPADDR的行,把22.1替换成10.12由于.号有特殊意义所有需要转义

[root@jie1 ~]# sed -i '/connect/s#YES#NO#' test

#匹配connect的行,把YES替换成NO

[root@jie1 ~]# sed -i 's/bin/tom/2g' test

#把所有匹配到bin的行中第二次及第二次之后出现bin替换成tom

[root@jie1 ~]# sed -i 's/daemon/jerry/2p' test

#把所有匹配到bin的行中第二次出现的daemon替换成jerry,并在生产与匹配行同样的行

[root@jie1 ~]# sed -i 's/adm/boss/2' test

#把所有匹配到adm的行中仅仅只是第二次出现的adm替换成boss

[root@jie1 ~]# sed -i '/root/{s/bash/nologin/;s/0/1/g}' test

#匹配root的行,把bash替换成nologin,且把0替换成1

[root@jie1 ~]# sed -i 's/root/(&)/g' test

#把root用括号括起来,&表示引用前面匹配的字符

[root@jie1 ~]# sed -i 's/BOOTPROTO/#BOOTPROTO/' test

#匹配BOOTPROTO替换成#BOOTPROTO,在配置文件中一般用于注释某行

[root@jie1 ~]# sed -i 's/ONBOOT/#&/' test

#匹配ONBOOT的行的前面添加#号,在配置文件中也表示注释某行

[root@jie1 ~]# sed -i '/ONBOOT/s/#//' test

#匹配ONBOOT的行,把#替换成空,即去掉#号,也一般用作去掉#注释

本文由 帝一博客 原创发布。用户在本站发布的原创内容(包括但不仅限于回答、文章和评论),著作权均归用户本人所有。独家文章转载,请联系邮箱:17762131@qq.com。获得授权后,须注明本文地址:

https://www.d1blog.com/linuxyunwei/1548.html

linux如何正则匹配删除一行,shell sed命令匹配替换删除最后第一行字符正则表相关推荐

  1. Shell sed命令,替换文件内容、替换目录下所有文件内容、读取文件内容

    目录 替换文件内容 格式: 实例:将文件内的34:51替换为11:22 替换目录下所有文件内容 格式: 实例: 替换当前目录下内容有aaa的替换为bbb 读取文件内容 替换文件内容 格式: sed - ...

  2. sed 删除某一行_运用sed命令高效地删除文件的特定行

    运用 sed 命令高效地删除文件的特定行 正常来说,我们想要删除文件中的某些行内容,一般都是先打开这个文件,然后找到要删除的内容,再然后选中这些行并按删除键进行删除,这在数据量很少时是没有问题的.但是 ...

  3. Linux实战教学笔记12-linux三剑客之sed命令精讲

    第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...

  4. linux中替换命令详解,linux中sed命令字符串替换的用法详解

    Linux系统中sed命令可以将字符串批量替换,省去了很多麻烦,下面由学习啦小编为大家整理了linux系统中sed命令字符串替换的用法详解,希望对大家有帮助! linux中sed命令字符串替换的用法详 ...

  5. cmd bat删除文件命令_运用sed命令高效地删除文件的特定行

    运用 sed 命令高效地删除文件的特定行 正常来说,我们想要删除文件中的某些行内容,一般都是先打开这个文件,然后找到要删除的内容,再然后选中这些行并按删除键进行删除,这在数据量很少时是没有问题的.但是 ...

  6. Linux 替换字符 换行,sed将换行替换成空格或者其他字符linux操作系统 -电脑资料...

    昨天有一同学问我如何利用shell的sed将换行替换成空格或者其他字符呢,下面小编来给大家介绍一下常用替换方法吧, sed流编辑器是shell中处理文本内容的一大利器.sed命令从文本流中读取一行文本 ...

  7. 【Linux脚本-sed命令在文本首行和尾行插入空行】

    @[TOC]Linux脚本-sed命令在文本首行和尾行插入空行 Linux脚本-sed命令在文本首行和尾行插入空行 演示如下: 首先创建需要操作的文本文件 //create a file contai ...

  8. 请教大家,如何使用sed命令,替换文件指定行的内容呢?-Linux系统管理-ChinaUnix.net...

    请教大家,如何使用sed命令,替换文件指定行的内容呢?-Linux系统管理-ChinaUnix.net

  9. linux shell sed命令 在文本每行 行尾 或 行首 添加字符

    用sed命令在行首或行尾添加字符的命令有以下几种: 假设处理的文本为test.file 在每行的头添加字符,比如"HEAD",命令如下: sed "s/^/HEAD&am ...

最新文章

  1. Java清空数组的数据
  2. Webhint开源了一种代码检查工具
  3. java 内部类 线程_java多线程基本概述(十四)——Thread内部类的几种写法
  4. 找到数组中第k小的值(利用快排的划分函数)
  5. 剑指Offer_35_数组中的逆序对
  6. A5D2 GPIO测试
  7. Mac 上删除用户或群组教程
  8. .NET:OrderBy和ThenBy
  9. 蓝桥杯 基础练习 杨辉三角形 JAVA
  10. 详解数据库锁机制和原理
  11. ue4风格化材质_风格化材质 - 游戏蛮牛 - Unreal中文翻译用户手册
  12. PyQt实现读取文件内容并绘制曲线
  13. 一些排序算法的Python实现
  14. HTB-Unified
  15. 2016年虾神公众号预告
  16. 怎么设置路由器当交换机用
  17. php命名空间namespace自动载入
  18. 专利法上的抽象思想与具体技术 ——计算机程序算法的客体属性分析
  19. 速 营 社 适合哪些人
  20. L1-4 调和平均(天梯赛2020)

热门文章

  1. Stable Diffusion AI 绘画入门指南
  2. jsp之JDBC连接数据库MySQL
  3. for、while、do while三种循环的流程图画法总结(附案例)
  4. Selenium IDE录制脚本
  5. IntelliJ IDEA2018激活(2019.1.11更新) 其实是2月14日更新的
  6. UVA10054-The Necklace(无向图欧拉回路——套圈算法)
  7. 中国烟草年鉴(1981-2020)缺2004-2010
  8. python初学总结八数码小游戏
  9. 云笔记: 跨平台云记事本工具
  10. Android关于联系人电话号码的查找