sed的基本用法

sed -n 'n,p' FILE:  显示偶数行

sed '1!G;h;$!d' file  逆序显示文件内容

sed '$!d' file 取出最后一行

sed '$!N;$!D' 显示最后两行

sed '/^$/d;G'  /etc/fstab 删除原有的所有空白行,而后为所有的非空白行后添加一个空白行;

sed 'n;d' FILE 显示奇数行

********************************************************************************************************

一、sed工作流程


sed 是一种在线的、非交互式的编辑器,它一次处理一行内容。

处理时,先把当前处理的行内容存储在临时缓冲区中,称为“模式空间”(pattern space),

之后再用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容打印到屏幕。

接着处理下一行,这样不断重复,直到文件末尾。

注意:模式空间的内容和 AWK 中的 $0 是一样的,处理每行的时候,都会被重新赋值为当前行的内容

文件内容并没有改变,除非你使用重定向存储输出。

Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

二、命令格式

创建一个文件


处理单个文件的命令格式

sed    [options]  '[匹配模式]    sed 的内部命令'      file1

处理多个文件的命令格式

sed    [options]  '[匹配模式]    [sed 的内部命令]'      file1  file2

options 选项是可选的,意思就是没有也行

sed '' mypasswd也可以实现

三、支持正则表达式

        与grep一样,sed在文件中查找模式时也可以使用正则表达式(RE)和各种元字符。正则表达式是

        括在斜杠间的模式,用于查找和替换,以下是sed支持的元字符。

        使用基本元字符集 ^, $, ., *, [], [^], \< \>,\(\),\{\}

        使用扩展元字符集 ?, +, { }, |, ( )使用扩展元字符的方式:

        sed  -r

        在实际使用的时候,都会加上 -r 参数,即使没有用的扩展正则也不会有任何影响。

四、sed基本用法

打印

sed  默认会输出文件的每一行,无论这行内容是否能匹配上匹配模式,假如被匹配到的则会再输出一次

sed  -r  ''    mypasswd

sed  -r  'p'    mypasswd

p 是 sed 的内部命令,是 打印(输出) 的作用

屏蔽默认输出使用 -n 选项

搜索替换 -- 这是重点 实际中用的最多


注意:

当在模式匹配中使用其他界定符号时,需要对其进行转义。

其他界定符用在 s 搜索替换时不必转义。例如:

sed  -r  's#root#shark#'      mypasswd

sed  -r  's%root%shark%'      mypasswd

sed  -r  's|root|shark|'      mypasswd

五、sed扩展

地址(定址)

地址用于决定对哪些 行 进行编辑。地址形式可以是数字、正则表达式或二者的结合。如果没有指定地址,sed将处理输入文件中的所有行。


替换命令:s

sed -rn 's/[0-9][0-9]/&.5/' mypasswd //&代表在查找串中匹配到的所有内容

sed -r 's/(no)login/\1不可登录/' mypasswd

部分输出为 bin:x:1:1:bin:/bin:/sbin/no不可登录

追加命令:a

$  表示最后一行

sed -r '$a 1.1.1.1 www.qfedu.com' /etc/hosts

插入命令:i

# sed -r '2i\1111111111111' /etc/hosts

# sed -r '2i111111111\

> 2222222222\

> 3333333333' /etc/hosts

修改命令:c

# sed -r '2c\1111111111111' /etc/hosts

# sed -r '2c\111111111111\

> 22222222222\

> 33333333333' /etc/hosts

六、sed常见操作


删除配置文件中 # 号注释的行

sed -ri '/^#/d' file.conf

删除开头的一个或者多个  空格或者 Tab 键

sed -ri '/^[ \t]*#/d' file.conf

YUM 源修改

sudo sed -ri s/^#baseurl/baseurl/g /etc/yum.repos.d/CentOS-Base.repo

sudo sed -ri s/^mirrorlist/#mirrorlist/g /etc/yum.repos.d/CentOSBase.repo

空格和table键 '/^#/d' [ \t] * 空格和table  删除配置文件中//号注释行

sed -ri '\Y^[ \t]*//Yd' file.conf

删除无内容空行

       - 开头和结尾之间什么都没有的行

       - 开头和结尾之间有多个空格的行

       - 开头和结尾之间有多个  Tab 键的行

sed -ri '/^[ \t]*$/d' file.conf

删除注释行及空行:

以下 3 中效果一样,挑一个自己喜欢的

sed -ri '/^[ \t]*#/d; /^[ \t]*$/d' /etc/vsftpd/vsftpd.conf

sed -ri '/^[ \t]*#|^[ \t]*$/d' /etc/vsftpd/vsftpd.conf

sed -ri '/^[ \t]*($|#)/d' /etc/vsftpd/vsftpd.conf

修改文件:

sed -ri '$a\chroot_local_user=YES' /etc/vsftpd/vsftpd.conf

sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config

sed -ri '/UseDNS/cUseDNS no' /etc/ssh/sshd_config

sed -ri '/GSSAPIAuthentication/cGSSAPIAuthentication no' /etc/ssh/sshd_config

给文件行添加注释:

sed -r '2,6s/^/#/' a.txt


使用小括号进行分组,可以有多个分组, 后面可以使用 \1 获取到第一个分组的内容


sed -r '2,6s/(.*)/#\1/' a.txt

sed -r '2,6s/.*/#&/' a.txt &匹配前面查找的内容

sed -r '3,$ s/^#*/#/' a.txt 将行首零个或多个#换成一个#

sed -r '30,50s/^[ \t]*#*/#/' /etc/nginx.conf

sed -r '2,8s/^[ \t#]*/#/' /etc/nginx.conf

sed中使用外部变量

var1=11111

# 无效

sed -r '3a$var1' /etc/hosts

# 正确

sed -r "3a$var1" /etc/hosts

# 有效

sed -r 3a$var1 /etc/hosts

# 报错

sed -r "$a$var1" /etc/hosts

# 有效,但是中间不能有空格

sed -r '$a'"$var1" /etc/hosts

# 有效, 将第一个 $ 进行转义

sed -r "\$a  $var1" /etc/hosts

***************************************************************************

\n再开头充当换行符

sed -r '$a IPADDR=192.168.40.100\nNETMASK=255.255.255.0\nGATEWAY=192.168.40.1' /etc/sysconfig/network-scripts/ifcfg-ens33

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容

  • sed ## 流编辑器 sed 一、sed工作流程 sed 是一种在线的、非交互式的编辑器,它一次处理一行内容。处...
    花泽菠菜xqc阅读 942评论 0 0
  • 一、sed工作流程 sed 是一种在线的、非交互式的编辑器,它一次处理一行内容。 处理时,先把当前处理的行内容存储...
    时辰Twohours阅读 239评论 0 0
  • 正则之sed 1.什么是sed: sed 是一个流编辑器,读取文件一行,存放在缓存区, 然后处理,最后输出。 se...
    你好树洞先生阅读 1,005评论 0 1
  • Sed工具工作原理及特性 1. sed是流编辑器,每一次读取一行到内存中,即称之为模式空间(pattern spa...
    魏镇坪阅读 10,936评论 0 12
  • 行前或行后插入 sed 'p;s/^.*$/--------/' file awk '{print $0;prin...
    不排版阅读 514评论 0 0