shell入门-sed-2替换功能
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替换功能的更多相关文章
- Python3.5 day3作业一:实现简单的shell sed替换功能
需求: 1.使python具有shell中sed替换功能. #!/usr/bin/env python #_*_conding:utf-8_*_ #sys模块用于传递参数,os模块用于与系统交互. i ...
- Python3学习之路~2.8 文件操作实现简单的shell sed替换功能
程序:实现简单的shell sed替换功能 #实现简单的shell sed替换功能,保存为file_sed.py #打开命令行输入python file_sed.py 我 Alex,回车后会把文件中的 ...
- 3-1 实现简单的shell sed替换功能
1.需求 程序1: 实现简单的shell sed替换功能 file1 的内容copy到file2 输入参数./sed.py $1 $2 $1替换成$2 (把a替换成% ) 2.个人思路 open ...
- 4.实现简单的shell sed替换功能
# -*- coding:utf-8 -*- # Author: JACK ZHAO # 程序1: 实现简单的shell sed替换功能 import sys #判断参数个数 if len(sys.a ...
- python 3.x 写 shell sed 替换功能
shell sed 替换功能 f1 = open('yesterday','r',encoding='utf-8') f2 = open('yesterday2','w',encoding='utf- ...
- 在shell中使用sed命令替换/为\/
sed命令相关: https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html https://www.cnblogs.com/D ...
- shell入门笔记1:执行方式、运行方式、变量、替换
说明: 本文是关于http://c.biancheng.net/cpp/shell/的相关笔记 shell的两种执行方式 交互式(interactive) 解释执行用户的命令,用户输入一条命令,She ...
- linux shell 入门
本文是本人学习linux shell入门收集整理,不完全原创. 参考博文: http://www.cnblogs.com/suyang/archive/2008/05/18/1201990.html ...
- Linux shell入门基础(八)
八.shell脚本sed&awk 01.sed的使用 流编辑器-Steam Editor #ed /etc/passwd 1,10p …… 1s/root/byf/p(替换root为byf) ...
随机推荐
- 在Nginx/Openresty中启用http2支持
转自个人博客 chinazt.cc 以下摘自http2的介绍: HTTP/2 源自 SPDY/2 SPDY 系列协议由谷歌开发,于 2009 年公开.它的设计目标是降低 50% 的页面加载时间.当下很 ...
- C# Lambda表达式与Linq
, , , , , , }; //linq写法 var res = from i in arry select i; //lambda写法 var res = arry.Select(i => ...
- python基础20 -------python中的异常处理
一.python程序中的会出现的错误. 1.语法错误:这种错误根本过不了python解释器的语法检测阶段,必须在程序执行之前进行改正. 2.逻辑错误:这种错误虽然过了语法检测阶段但是程序在执行的过程中 ...
- JETSON TK1 ~ 基于eclipse下开发ROS
此文档是在PC端开发后移植到TK1,并非在TK1上安装eclipse 官方使用IDE开发的文档: http://wiki.ros.org/IDEs 一:安装eclipse 1.下载eclipse安装包 ...
- [原创]java WEB学习笔记36:Java Bean 概述,及在JSP 中的使用,原理
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- P3768 【简单的数学题】
P3768 [简单的数学题] \(Ans=\sum ^{n}_{i=1}\sum ^{n}_{j=1}ijgcd(i,j)\) \(=\sum ^{n}_{i=1}\sum ^{n}_{j=1}ij\ ...
- hiho一下 第四十九周 题目1 : 欧拉路·一【无向图 欧拉路问题】
题目1 : 欧拉路·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho最近在玩一个解密类的游戏,他们需要控制角色在一片原始丛林里面探险,收集道具,并找到最 ...
- 1.微信小程序-B站:前言准备
前言 <微信小程序开发-B站>是以bilibili移动端网站为基础开发微信小程序版本,笔者喜欢的学习是愉快.轻松并能学到实战的东西,不知各位观友有没有一样的经历,就是一有问题不是先去Goo ...
- C# Stopwatch与TimeSpan详解
http://www.cnblogs.com/newstart/archive/2012/09/21/2696884.html
- kmplayer音轨切换(换配音)
ZZ:kmplayer怎么换音轨 kmplayer音轨切换方法 - 当下软件园.html(http://www.downxia.com/zixun/4425.html) kmplayer怎么换音轨 1 ...