sed的替换功能和vim语法挺像的

把1到10行的nologin替换成login

[root@wangshaojun ~]# sed '1,10s/nologin/login/g' 1.txt

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/login
daemon:x:2:2:daemon:/sbin:/sbin/login

....

vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin

$

把1到10行的/sbin/nologin改成login

[root@wangshaojun ~]# sed '1,10s/\/sbin\/nologin/login/g' 1.txt

[root@wangshaojun ~]# sed '1,10s#/sbin/nologin#login#g' 1.txt

[root@wangshaojun ~]# sed '1,10s@/sbin/nologin@login@g' 1.txt

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:login
daemon:x:2:2:daemon:/sbin:login

......

vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin

.......

$

把全部的行改成login

[root@wangshaojun ~]# sed 's#^.*$#login#g' 1.txt//////s表示替换不指定行数就是全部行//////^开头.*是任意个任意字符$结尾 意思是从开头到结尾是任意个任意字符///

login
login
login
.....

$

在每一行后面加一个login

[root@wangshaojun ~]# sed 's#^.*$#&login#g' 1.txt
root:x:0:0:root:/root:/bin/bashlogin
bin:x:1:1:bin:/bin:/sbin/nologinlogin
daemon:x:2:2:daemon:/sbin:/sbin/nologinlogin

......

在每一行后面加一个空格然后加login

[root@wangshaojun ~]# sed 's#^.*$#& login#g' 1.txt
root:x:0:0:root:/root:/bin/bash login
bin:x:1:1:bin:/bin:/sbin/nologin login
daemon:x:2:2:daemon:/sbin:/sbin/nologin login

......

把每一行所以的数字删掉

[root@wangshaojun ~]# sed 's#[0-9]##g' 1.txt /////替换成空格也就等于删掉
root:x:::root:/root:/bin/bash
bin:x:::bin:/bin:/sbin/nologin
daemon:x:::daemon:/sbin:/sbin/nologin

......

把每一行的字母删掉

[root@wangshaojun ~]# sed 's#[a-z]##g' 1.txt
::0:0::/://
::1:1::/://
::2:2::/://

......

把一行的数字字母删掉

[root@wangshaojun ~]# sed 's#[^0-9A-Za-z]##g' 1.txt ////反选
rootx00rootrootbinbash
binx11binbinsbinnologin
daemonx22daemonsbinsbinnologin

......

以冒号为分隔符把第一段把最后一段换位置

[root@wangshaojun ~]# sed -r '^.*$#(^[a-z0-9]:)(.*:)(.*$)#\3\2\1#g' 1.txt (错误)

[root@wangshaojun ~]# sed -r 's#(^[a-z0-9]+)(:.*:)(.*$)#\3\2\1#g' 1.txt/////s是替换的意思(^[a-z0-9]+)以字母和数字开头后面跟1个或任意个+号前面的字符(:.*:)以冒号开头以冒号结束中间是任意个任意字符(.*$)最后一个冒号后面的任意个任意字符到结束 \3\2\1 意思是把3和1调换位置

/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/sbin/nologin:x:2:2:daemon:/sbin:daemon
/sbin/nologin:x:3:4:adm:/var/adm:adm

.....

分别搜索包含关键词root和aming的行,一行有两个关键词显示两次

[root@wangshaojun ~]# sed -rn '/user/p;/root/p' 1.txt
root: user x:0:0:root:/root:/bin/bash
root: user x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin

或者搜索包含关键词root和aming的行,一行有两个关键词显示一次

[root@wangshaojun ~]# sed -n -r '/user|root/p' 1.txt
root: user x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin

/////////////////////////////////////////////////////////////////////////////////////////////

总结:sed的替换 指定替换的行数/指定被替换的字符/指定新的字符/全局替换加g否则替换第一个出现的被替换字符

shell入门-sed-2替换功能的更多相关文章

  1. Python3.5 day3作业一:实现简单的shell sed替换功能

    需求: 1.使python具有shell中sed替换功能. #!/usr/bin/env python #_*_conding:utf-8_*_ #sys模块用于传递参数,os模块用于与系统交互. i ...

  2. Python3学习之路~2.8 文件操作实现简单的shell sed替换功能

    程序:实现简单的shell sed替换功能 #实现简单的shell sed替换功能,保存为file_sed.py #打开命令行输入python file_sed.py 我 Alex,回车后会把文件中的 ...

  3. 3-1 实现简单的shell sed替换功能

    1.需求 程序1: 实现简单的shell sed替换功能 file1 的内容copy到file2 输入参数./sed.py  $1  $2 $1替换成$2 (把a替换成% ) 2.个人思路 open ...

  4. 4.实现简单的shell sed替换功能

    # -*- coding:utf-8 -*- # Author: JACK ZHAO # 程序1: 实现简单的shell sed替换功能 import sys #判断参数个数 if len(sys.a ...

  5. python 3.x 写 shell sed 替换功能

    shell sed 替换功能 f1 = open('yesterday','r',encoding='utf-8') f2 = open('yesterday2','w',encoding='utf- ...

  6. 在shell中使用sed命令替换/为\/

    sed命令相关: https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html https://www.cnblogs.com/D ...

  7. shell入门笔记1:执行方式、运行方式、变量、替换

    说明: 本文是关于http://c.biancheng.net/cpp/shell/的相关笔记 shell的两种执行方式 交互式(interactive) 解释执行用户的命令,用户输入一条命令,She ...

  8. linux shell 入门

    本文是本人学习linux shell入门收集整理,不完全原创. 参考博文: http://www.cnblogs.com/suyang/archive/2008/05/18/1201990.html ...

  9. Linux shell入门基础(八)

    八.shell脚本sed&awk 01.sed的使用 流编辑器-Steam Editor #ed /etc/passwd 1,10p …… 1s/root/byf/p(替换root为byf) ...

随机推荐

  1. win8 office 2013激活方法

    先在用win8的人越来越多了,可是某些软件对win8不太友好(也可以说是win8对某些低版本软件不友好),office注册软件office toolkit就是,我在win7上使用2.4.1版本没有问题 ...

  2. mysql用户和权限管理(Linux系统下)

    在mysql自带的库中有一个mysql,这个库包含了太多的东西,其中有一张表user,这张表存储了所有的用户信息. mysql> select user,host,password from u ...

  3. windows中检查端口占用

    在cmd中怎么输入netstat -aon|findstr "9080" 返回: UDP  0.0.0.0:8001   *.* 其中的4220为进城PID

  4. [原创]java WEB学习笔记27:深入理解面向接口编程

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  5. 剑指offer之 二叉搜索树与双向链表

    class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) ...

  6. git use

    git init git init --bare  ''会将文档直接加上.git后缀 具体内容请渡 git add --all git commit -m 'label' git push --all ...

  7. ubantu16.04

    http://mirror.pnl.gov/releases/xenial/ ubuntu16.04下载地址: 中科大源       http://mirrors.ustc.edu.cn/ubuntu ...

  8. 分享知识-快乐自己:IO流基本操作

    点我参考常用API: IO图解: 相关理论: 流的概念和作用: 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将 ...

  9. node.js+express+jade系列四:jade嵌套的使用

    jade是express自带的模板引擎 jade文件可以嵌套使用,include引用外部jade文件,extends引用jade模板 例如 有一个主jade文件layout.jade,引用top.ja ...

  10. 【DP专辑】ACM动态规划总结(转)

    http://blog.csdn.net/cc_again/article/details/25866971 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少,多元性强, ...