Linux的sed命令详解大全
2023-09-14 09:09:23 时间
Linux的sed命令详解大全
一、sed命令介绍
sed全称是:Stream EDitor(流编辑器)
Linux sed 命令是利用脚本来处理文本文件,sed 可依照脚本的指令来处理、编辑文本文件。Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
二、sed 的运行模式
当处理数据时,Sed 从输入源一次读入一行,并将它保存到所谓的模式空间pattern space中。所有 Sed 的变换都发生在模式空间。变换都是由命令行上或外部 Sed 脚本文件提供的单字母命令来描述的。大多数 Sed 命令都可以由一个地址或一个地址范围作为前导来限制它们的作用范围。
三、sed的相关选项
-n, --quiet, --silent 取消自动打印模式空间
-e 脚本, --expression=脚本 添加“脚本”到程序的运行列表
-f 脚本文件, --file=脚本文件 添加“脚本文件”到程序的运行列表
--follow-symlinks 直接修改文件时跟随软链接
-i[扩展名], --in-place[=扩展名] 直接修改文件(如果指定扩展名就备份文件)
-l N, --line-length=N 指定“l”命令的换行期望长度
--posix 关闭所有 GNU 扩展
-r, --regexp-extended 在脚本中使用扩展正则表达式
-s, --separate 将输入文件视为各个独立的文件而不是一个长的连续输入
-u, --unbuffered 从输入文件读取最少的数据,更频繁的刷新输出
--help 打印帮助并退出
--version 输出版本信息并退出
-a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
-c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
-d ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
-i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
-p ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
-s ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法
四、sed基本用法
1.sed语法
Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]...
2.sed的查看功能
①查看passwd文件的第5到第8行内容
[root@control data]# sed -n '5,8 p' passwd
rootaaaa1a1:x:0:0:root:/aa1a2sroot:/bin/bash
rootaaaa1a1:x:0:0:root:/aa1a2sroot:/bin/bash
rootaaaa1a1:x:0:0:root:/aa1a2sroot:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
②查看passwd文件中以roo开头的行
[root@control data]# sed -n '/^roo/ p' passwd
root:x:0:0:root:/root:/bin/bash
③忽略大小写,对含有root字符的行打印出来
[root@control data]# sed -n '/root/I p' passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
3.sed的查找功能
查找passwd文件中有/bin/bash字符串的行
[root@control data]# sed -n '\%/bin/bash% p' passwd
root:x:0:0:root:/root:/bin/bash
admin:x:1001:1001::/home/admin:/bin/bash
user1:x:1002:1002:test user:/home/user1:/bin/bash
ituser1:x:2002:2002::/data/itusers:/bin/bash
redhat:x:2003:2003::/home/redhat:/bin/bash
huawei:x:2004:2004::/home/huawei:/bin/bash
user3:x:2000:2000::/home/user3:/bin/bash
user2:x:2019:2019::/home/user2:/bin/bash
user4:x:2025:2025::/home/user4:/bin/bash
user5:x:2026:2026::/home/user5:/bin/bash
user6:x:2027:2027::/home/user6:/bin/bash
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
user99:x:2028:2028::/home/user99:/bin/bash
4.将 /data/passwd 第 2~5 行删除打印输出
[root@control data]# sed '2,5 d' passwd |head
root:x:0:0:root:/root:/bin/bash
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
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
5.以行为单位的新增
①在文件passwd上的第四行后面添加新字符串
root@control data]# sed -e 4a\it-test passwd | head
rootaaaa1a1:x:0:0:root:/aa1a2sroot:/bin/bash
rootaaaa1a1:x:0:0:root:/aa1a2sroot:/bin/bash
rootaaaa1a1:x:0:0:root:/aa1a2sroot:/bin/bash
it-test
rootaaaa1a1:x:0:0:root:/aa1a2sroot:/bin/bash
rootaaaa1a1:x:0:0:root:/aa1a2sroot:/bin/bash
rootaaaa1a1:x:0:0:root:/aa1a2sroot:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
②passwd第1前追加huawei
[root@control data]# sed '1 i\huawei ' passwd |head
huawei
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
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
6.sed替换功能
①passwd第三行替换为redhat
[root@control data]# sed '3 c\redhat' passwd
[root@control data]# sed '3 c\redhat' passwd |head
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
redhat
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
operator:x:11:0:operator:/root:/sbin/nologin
7.sed的查找及替换功能
将passwd的5到10的bin字符串查找出来替换为aaaa
[root@control data]# sed -n '5,10 s/bin/aaaa/ p' passwd |head
lp:x:4:7:lp:/var/spool/lpd:/saaaa/nologin
sync:x:5:0:sync:/saaaa:/bin/sync
shutdown:x:6:0:shutdown:/saaaa:/sbin/shutdown
halt:x:7:0:halt:/saaaa:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/saaaa/nologin
operator:x:11:0:operator:/root:/saaaa/nologin
8.sed对原文件操作
①删除原文件第1行
原文件
cat passwd |head
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
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
operator:x:11:0:operator:/root:/sbin/nologin
[root@control data]#
删除操作后
[root@control data]# sed -i '1 d' passwd
[root@control data]# cat passwd |head
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
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
②修改原文件之前备份
[root@control data]# sed -i.bak '1 d' passwd
相关文章
- linux route文件,Linux route 命令使用详解
- Linux命令之ping详解程序员
- 了多种功能Linux:多功能强大之旅(linux包含)
- 发行版美观明亮:Linux发行版之比较(比较漂亮的linux)
- Linux下实现更强防护:wall命令(linux-wall)
- Linux虚拟机网卡配置指引(linux虚拟机配置网卡)
- 「Linux下安装并使用Tar命令」(linux安装tar命令)
- 探索Linux下查找文件的命令(linux命令查找文件)
- 使用Linux系统下LS命令操作指南(linux下ls命令)
- 界面Linux下的图形界面体验之旅(linux图形)
- Linux命令ls详解:一次性了解全部内容(linuxls详解)
- Linux之家:企鹅Voyager旅程开启(linux的企鹅)
- 探索Linux的多样分支世界(linux的分支)
- 探索Linux文件系统之旅(linux文件的类型)
- 学习Linux命令,轻松查看系统信息(linux命令查看系统)
- 学会Linux命令ID功能,管理用户、组与权限(linux命令id)
- 系统比较:阿里飞天与Linux系统(阿里飞天系统和linux)
- 开启Linux防火墙的命令行技术(linux防火墙开启命令)
- Linux锁定机制:保护系统的关键技术(linux 锁原理)
- 深入探究Linux Set命令:使用及常见应用(linux的set)
- Linux下pgrep命令简易指南(pgrep linux)
- Linux环境下gcc和ld命令详解(linuxgccld)
- 打造个性化的Linux命令:DIY您自己的命令!(linux自己的命令)
- Linux 下有线网卡驱动安装详解(linux 有线网卡)
- 实用技巧:教你如何用Linux命令快速启动应用程序(linux启动应用命令)
- Linux 下添加用户的命令指南(linux 添加用户命令)
- Linux配置参数一探究竟:查看分析实践(linux 配置查看)