Linux 文本处理三剑客之sed

sed 行编辑器

  1. 主要是个文本编辑器 (man sed) 比如:删除某一行 抽取某一行到
    新的文件中是一种在线编辑器,它一次处理一行内容。处理时,把当 前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space)(为什么叫模式空间呢:因为 sed(不是所有的行都处理)可以指定仅仅处理哪些行,所以 sed 可以像 grep 一样做模式过滤的 符合模式条件的处理 不符合条件的不予处理 ),接着用sed 编辑命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。符合模式(模式空间中的模式 每次读取一行 匹配模式 编辑命令)做编辑(到底是删除还是现实还是什么 取决于 sed的编辑命令)Sed 主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等
    2.定址可以通过定址来定位你所希望编辑的行,该地址用数字构成,用逗号分隔的两个行数表示以这两行为起止的行的范围(包括行数表示的那两行)。如 1,3 表示 1,2,3 行,美
    元符号($)表示最后一行。范围可以通过数据,正则表达式或者二者结合的方式确定
    3.Sed 命令格式
    调用 sed 命令有两种形式:
    sed [options] ‘command’ file(s)
    sed [options] -f scriptfile(你可以把 sed 理解为一种简单的语言 只不过这种语言 仅仅只对文件做编辑 脚本由sed 命令组成) file(s)

sed [options] ‘command’ file

p 显示模式操作
sed -n ‘/:/p’ fstab 显示有:的行
sed -n ‘/UUID$/p’ fstab 显示UUID结尾的行
sed -n ‘/^UUID/’ fstab 显示UUID开始的行
sed -n ‘2,6p’ fstab 显示2到6行
sed -n ‘2,6!p’ fstab 显示非2到6行

d 删除模式操作
sed ‘/^UUID/d’ fstab 删除UUID开头的行显示
sed ‘/^#/d’ fstab 删除#开头的行显示
sed '/^ / d ′ f s t a b 删 除 /d' fstab 删除 /dfstab开头的行显示
sed ‘1,4d’ fstab 删除1到4行显示
sed ‘/^UUID/!d’ fstab 删除不是UUID开头的行显示(对地址定界取反)

c 替换模式操作
sed ‘/^UUID/c hello’ fstab 把UUID开头的行替换为hello

w 写模式操作
sed ‘/^UUID/w /mnt/fstab.txt’ fstab 把fstab里的UUID开始的行写进fstab.txt文件
sed ‘/^UUID/=’ fstab 显示UUID开头的行号和行
sed ‘6r /etc/issue’ fstab 把issue整合到fstab第6行

a 添加模式操作
sed ‘/^UUID/a \hello sed /etc/fstab’(追加到每一行符合条件
的行后面)
sed ‘/^UUID/a \hello sed\nwestos /etc/fstab’(支持多行追加)

i 追加
sed ‘/^UUID/i\hello sed\nwestos /etc/fstab’(追加在符合条件
的行前面)

sed的其他用法
sed ‘G’ file 给文件内容加个空行
sed ‘KaTeX parse error: Expected 'EOF', got '\n' at position 63: …ata | sed 'N;s/\̲n̲//'行号在行首 sed -n…p’ data 显示最后一行
sed ‘/^$/’ file 显示空行

s/pattern/string/ pattern 可以用正则表达式而 string 不可以,查找并替换

对可能含有空白行的文加倍行间距:首先删除数据流中的所有空白
行,然后用 G 命令在所有行后插入新的空白行
sed ‘/^ / d ; /d; /d;!G’ data

打印末尾行
sed -n ‘$p’ data

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值