shell - sed 简单使用记录

时间长不用,总是会忘掉的。。。。。。。。还是烂笔头好些。

sed 命令使用帮助及实操举例

功能:主要用来对一个或多个文件进行编辑,简化对文件的反复操作。

语法: sed [-hnV] [-e<script>][-f<script文件>][文本文件]

参数:

  -e <script> 根据script指定的脚本来处理输入的文本文件,这个只实现了屏幕打印修改后的效果。并没有实际修改文件

  -f<script文件>:这里是指定执行 script脚本文件

  -h:帮助

  -V:显示版本

动作说明(这里是主要使用方法):

  a:在指定行号的下方新增一行字符串

  -i:在指定的行号上方新增一行字符串

  -c:取代,可以使用指定的字符串替换n1到n2之间的行

  -s:字符串匹配替换为新的内容,这个可以搭配正则表达式

  -d:删除指定的行

  -p:进行屏幕打印

实例:

这里文本文件名称为:passwd,进行举例测试

内容为:

  root:x:0:0:root:/root:/bin/bash
  bin:x:1:1:bin:/bin:/sbin/nologin
  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  sync:x:5:0:sync:/sbin:/bin/sync

注意:我这里使用,-p 参数进行屏幕打印,如果是要直接修改文件内容,使用 -i 参数,打印文档行号使用: nl

新增举例:

  在第二行后增加一行,执行:nl passwd | sed -e ‘2a testcontent‘

1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
testcontent
3 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
4 sync:x:5:0:sync:/sbin:/bin/sync

删除举例:

  删除第三行,执行:nl passwd | sed -e ‘3d‘

1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
4 sync:x:5:0:sync:/sbin:/bin/sync

  删除3,4行,执行:nl passwd | sed -e ‘3,4d‘

1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin

  删除第3行到最后一行,执行:nl passwd | sed -e ‘3,$d‘

效果同上

  搜索root并删除此行,执行:nl passwd | sed  ‘/root/d‘

2 bin:x:1:1:bin:/bin:/sbin/nologin
3 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
4 sync:x:5:0:sync:/sbin:/bin/sync

插入举例:

  在第二行上方插入一行,执行:nl passwd | sed -e ‘2i testfile‘

1 root:x:0:0:root:/root:/bin/bash
testfile
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
4 sync:x:5:0:sync:/sbin:/bin/sync

  在第二行后增加2行,执行:nl passwd | sed -e "2a first line ....\n second line ...."   注意:这里使用 \n做了回车

1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
first line ....
second line ....
3 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
4 sync:x:5:0:sync:/sbin:/bin/sync

取代举例

  将第二行取代为新增字符串,执行:nl passwd | sed -e ‘2c testfile‘

1 root:x:0:0:root:/root:/bin/bash
testfile
3 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
4 sync:x:5:0:sync:/sbin:/bin/sync

  将第2行到第4行取代为新的字符串,执行:nl passwd | sed -e ‘2,4c testfile‘

1 root:x:0:0:root:/root:/bin/bash
testfile

显示指定行举例

  显示第3行,执行:nl passwd | sed -n ‘3p‘

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

  显示第3行到第4行,执行:nl passwd | sed -n ‘3,4p‘

3 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
4 sync:x:5:0:sync:/sbin:/bin/sync

  搜索并显示具有root关键字的行,执行:nl passwd | sed -n ‘/root/p‘

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

替换举例:

  替换所有的nologin为bash,执行:nl passwd | sed ‘s/nologin/bash/g‘

1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/bash
3 lp:x:4:7:lp:/var/spool/lpd:/sbin/bash
4 sync:x:5:0:sync:/sbin:/bin/sync

  搜索root行并替换bash为shellbash,执行:nl passwd | sed -n ‘/root/{s/bash/shellbash/;p;q}‘   这里的q为退出

1  root:x:0:0:root:/root:/bin/shellbash

  替换所有的nologin为bash,执行:nl passwd | sed -e ‘s/nologin/bash/g‘

1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/bash
3 lp:x:4:7:lp:/var/spool/lpd:/sbin/bash
4 sync:x:5:0:sync:/sbin:/bin/sync

综合举例1:提取网卡ip

ifconfig eth2 | grep ‘inet addr‘ | sed  ‘s/^.*addr://‘| sed ‘s/Bcast:.*//‘

输出:192.168.10.150

第二种写法:ifconfig eth2 | sed -n ‘2p‘ | sed  ‘s/^.*addr://‘| sed ‘s/Bcast:.*//‘

综合举例2:多点编辑

  删除第3行到最后一行,且替换bash为shellbash,执行:nl passwd |sed -e ‘3,$d‘ -e ‘s/bash/shellbash/‘

1 root:x:0:0:root:/root:/bin/shellbash
2 bin:x:1:1:bin:/bin:/sbin/nologin

原文地址:https://www.cnblogs.com/zy6103/p/10480276.html

时间: 2024-11-09 11:38:28

shell - sed 简单使用记录的相关文章

Python自动化开发—EX.3(实简单的shell sed功能)

#程序1: 实现简单的shell sed替换功能 import sys,os old_file = open('test.txt','r',encoding='utf-8') new_file = open('test_bak.txt','w',encoding='utf-8') old_line = input('替换前内容>>:') new_line = input('替换后内容>>:') for line in old_file: #print(line.strip()) i

Shell 实现简单计算器功能

Shell 实现简单计算器功能,脚本如下: [[email protected] scripts]# cat jisuan.sh #!/bin/bash print_usage(){     printf $"USAGE:$0 NUM1 {+|-|*|/} NUM2\n"     exit 1 } #判断传入的参数是不是3个 if [ $# -ne 3 ]   then     print_usage fi firstnum=$1 secondnum=$3 op=$2 #对传入的参数进

使用shell脚本简单模拟对特定文件同时读写操作

使用shell脚本简单模拟对特定文件同时读写操作文件内容的格式:field1    ,       field2    , field3    ,       field4以,为分隔符,但是存在空格. 脚本用法如下: ./check_write_read.sh 10 输出结果: Thu Apr 27 19:59:44 CST 2017:Read operation finished 670 Thu Apr 27 19:59:44 CST 2017:Write operation finished

shell中简单的字符串操作

在SHELL编程中,经常要处理一些字符串变量.比如,计算长度啊.截取子串啊.字符替换啊等等,常常要用到awk.expr.sed.tr等命令.下面给大家介绍个简单的字符串处理方法,用不着嵌套复杂的子命令. ${#VALUE}:计算VALUE字符串的字符数量. ${VALUE%.*}或${VALUE%%.*}:删除VALUE字符串中以分隔符"."匹配的左边字符,保留右边字符. ${VALUE#*.}或${VALUE##*.}:删除VALUE字符串中以分隔符"."匹配的右

对shell的简单认识

shell是一个命令解释器: shell分为交互式shell和非交互式shell: 交互式shell就是命令行一问一答:非交互式shell是像shell文本那样,一次解析文本, 并未在命令行给我们作出回答. shell又分为登陆式shell和非登录式shell: 主要区分于是否输入用户名和密码,输入用户名.密码登陆就为登陆式shell, 例如我们在图形化界面下打开的终端为非交互式shell: type命令的用法: -t: 加-t参数,type将name通过以下文字显示他的意思 file:表示外部

[编程题] 简单错误记录

开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号. 处理:1.记录最多8条错误记录,对相同的错误记录(即文件名称和行号完全匹配)只记录一条,错误计数增加:(文件所在的目录不同,文件名和行号相同也要合并)2.超过16个字符的文件名称,只记录文件的最后有效16个字符:(如果文件名不同,而只是文件名的后16个字符和行号相同,也不要合并)3.输入的文件可能带路径,记录文件名称不能带路径 输入描述: 一行或多行字符串.每行包括带路径文件名称,行号,以空格隔开. 文件路径为window

Settings app简单学习记录

Settings是android系统设置的入口.主界面由Settings.java以及settings_headers.xml构成. Settings类继承自PreferenceActivity,而PreferenceActivity又继承自ListActivity,ListActivity拥有ListView和ListAdapter类型的成员变量. 1,如何使用PreferenceActivity构建页面 使用addPreferencesFromIntent或者addPreferencesFr

27:简单错误记录SimpleErrorLog

题目描述 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号. 处理: 1. 记录最多8条错误记录,循环记录,对相同的错误记录(净文件名称和行号完全匹配)只记录一条,错误计数增加: 2. 超过16个字符的文件名称,只记录文件的最后有效16个字符: 3. 输入的文件可能带路径,记录文件名称不能带路径. 输入描述:一行或多行字符串.每行包括带路径文件名称,行号,以空格隔开. 输出描述:将所有的记录统计并将结果输出,格式:文件名 代码行数 数目,一个空格隔开,如: 输入例子: E:

php简单日志记录脚本

自己的站点经常被搜索引擎爬到,想知道搜索引擎和来访者都对哪些内容比较感兴趣,于是写了一个简单的日志记录"系统",来记录来访者的信息. 分为三个文件,record.php,log.php,conn.php conn.php是数据库连接文件,调用该文件返回一个mysql的数据库读写接口: log.php是后台,可以从这里看到记录在数据库中的内容: record.php是记录访客用的脚本,在任意页面包含该脚本,即可实现对于来访者的记录. 代码如下: conn.php: <?php #c