Linux常用文本编辑工具及常用指令

以下工具的使用都是建立在会简单使用正则表达式的基础上,不了解的群攻自己做功课。

sed


sed是一种流式编辑器,是一种文本编辑工具,以行为单位进行文本操作。sed默认按照basic规则进行匹配。
常用的命令格式如下:

sed option '/pattern/action' file

pattern:为一个正则表达式,用来匹配所要操作的字符串行。

action:是操作方法。常用的操作方法有:

  • p,将匹配到的内容打印两次,其他未匹配的打印一次。
  • d,将匹配到的字符串删除。
  • s,进行匹配字符替换。常用党的命令格式如下:
    sed option ‘patter/s/patter1/patter2/g’ file
    在patter匹配的字符串行中,用patter2替换patter1。加g选项是全部替换,不加g选项只替换第一个匹配到的。
  • n,读取下一行到模式缓冲区中,将模式空间的原内容清空。
  • N,读取文件的下一行追加到模式空间内,不请客原内容。

option:选项,对数据做的相应操作,常用的有:

  • -n 将匹配到的字符串行输出,其他不输出。
  • -i 将修改的内容同步修改到源文件。
  • -e 多项编辑命令,可连接多个sed指令对同一行进行操作。

定址

定址用于决定对哪些行进行编辑。地址的表示可以由数字,正则表达式或者二者的结合。如果没有指定地址,sed将处理输入文件的每一行。
eg:
sed -n ‘3p’ file 打印文件第三行。
sed -n ‘100,200p’ file 打印文件第100行~200行的信息。
地址是逗号分隔的,需要处理的地址是这两行之间的范围(包括这两行在内)。范围可以用数组正则表达式或者二者的结合表示。
sed ‘2,5d’ file 删除第2行到底5行
sed ‘/start/,/end/d’ file 删除包含‘start’行和‘end’行之间的行。
sed ‘/start/,10d’ file

模式空间

sed对一个文件进行操作时,会依次将文件的每一行拷贝读取到一个特殊的缓冲区,也叫模式空间内,依次读取一行。读取完后进行正则表达式的匹配,若匹配,则进行action操作,若不匹配则丢弃。紧接着处理完后读取下一行。所以sed对文件行的操作是在模式空间内,不会对源文件进行修改。
这里写图片描述

保持空间

我们可以把保持空间想象成一个仓库,作为数据的暂存区域,但记住,处理数据时依然需要将数据由保持空间加载到模式空间。
保持空间并不常用,只有以下几条指令会用到保持空间。
g:将保持空间的内容拷贝到模式空间内,并将模式空间的原内容清除。
G:将保持空间的内容追加到模式空间内,不清除原内容。
h:将模式空间的内容拷贝到保持空间,将原来保持空间的内容清除。
H:将模式空间的内容追加到保持空间,不清除原内容。
d:删除模式空间的所有行,并读入下一新行到模式空间。
D:删除multiline pattern的第一行,不读入下一行。
x:交换保持空间与模式空间的内容。

eg:
①给文件的末尾加一个空行
这里写图片描述
②将文件逆序输出(模拟tac指令)
这里写图片描述

③将匹配的行追加到文件尾。

sed -e '/hello/H' -e '$G' file  ###类似于复制功能

这里写图片描述

sed -e '/hello/{H;d}' -e '$G' file ## 类似于剪切功能

这里写图片描述

④行列转换

sed -n 'H;{x;s/\n/ /g;p}' file 

模式空间默认去掉每一行的\n,所以要想仅仅在模式空间内部将\n替换掉是行不通的, 保持空间内部有两行或两行以上内容时,会在每一行后面加上\n,所以现将数据Hold到保持空间,在执行x指令,进行模式空间与保持空间内容的交换,再进行替换。
这里写图片描述

⑤求1~100的和

seq 100|sed -n 'H;${x;s/\n/+/g;s/^+//;p}'|bc ### bc指令是对表达式求和。

s/^+// 表示将开头多余的加号替换为空。

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值