一、基础介绍
sed(Stream Editor),流编辑器对标准输出或文件逐行进行处理。
二、语法格式
第一种形式:
stdout | sed [option] "pattern command"
第二种形式
sed [option] "pattern command" file
三 、sed的处理过程
sed的处理过程四、sed的选项
选项 | 含义 |
---|---|
-n | 只打印模式匹配行 |
-e | 直接在命令行进行sed编辑,默认选项 |
-f | 编辑动作保存在文件中,指定文件执行 |
-r | 支持扩展正则表达式 |
-i | 直接修改文件内容 |
选项练习
测试文案
sed.txt
I love python
I love PYTHON
Hadoop is bigdata frame
1、非静默模式(同时输出匹配行和远行信息)
sed 'p' sed.txt
/*
I love python
I love python
I love PYTHON
I love PYTHON
Hadoop is bigdata frame
Hadoop is bigdata frame
*/
2、-n 静默模式输出(只打印一遍,原行信息不打印,只打印匹配信息)
sed -n 'p' sed.txt
/*
I love python
I love PYTHON
Hadoop is bigdata frame
*/
sed -n '/python/p' sed.txt
/*
I love python
*/
3、-e 同时按照多个条件进行编辑
sed -n -e '/python/p' -e '/PYTHON/p' sed.txt
/*
I love python
I love PYTHON
*/
4、-f 引用外部的sed命令
edit.sed
/python/p
sed -n -f edit.sed sed.txt
/*
I love python
*/
5、-r 支持扩展运算符
sed -n -r '/python|PYTHON/p' sed.txt
/*
I love python
I love PYTHON
*/
6、-i 修改原文件内容
sed -i 's/love/like/g' sed.txt
cat sed.txt
/*
I like python
I like PYTHON
Hadoop is bigdata frame
*/
五、sed中的详解pattern
pattern用法表pattern 练习
前置操作(每次操作后都要操作)
cp /etc/passwd ./
1、指定行号
sed -n "17p" passwd
// libstoragemgmt:x:998:995:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
2、指定起始行号和结束行号
sed -n "10, 12p" passwd
/*
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
*/
3、指定起始行号,然后后面N行
sed -n "10,+5p" passwd
/*
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:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
*/
4、正则表达式匹配行
sed -n "/^root/p" passwd
/* root:x:0:0:root:/root:/bin/bash */
// 打印未登录的行
sed -n "/\/sbin\/nologin/p" passwd
/* 结果略*/
5、从匹配到pattern1的行,到匹配到pattern2的行
sed -n "/^ftp/,/^mail/p" passwd
/* 略 */
6、指定行号开始,直到匹配到pattern1的行
sed -n "4,/^hdfs/p" passwd
/* 略 */
7、从pattern1匹配的行开始,直到匹配到指定的位置
sed -n "/root/, 10p" passwd
/* 略 */
sed中的编辑命令详解
编辑命令(上)编辑命令下
网友评论