前篇回顾
sed - 简介 读取编辑文字档的好工具
sed - 2 Pattern
sed - 3 Delete command
sed - 4 Write commands
sed - 5 Replace command
之前讲到的sed工作流程, 其实还有个Hold Space
, 一个保留空间, 预设是保留上一行的行内容
有了这HoldSpace, 我们能做到更多样化的操作.
试想一下有上一行的内容, 又有当前该行的内容, 这两个暂存能做什麽?
Swap
就能作到交换两边空间的资料
先列举能影响到Hold Space的几个常见Command
复制
pattern space 到hold space (就是覆盖过去)追加
pattern space 到hold space复制
hold space 到 pattern space追加
hold space 到 pattern space这里还得多介绍几个Command
追加
读取下一行pattern space, 并且把这两行当作一行, 两行中间依然保有第一行的\n换行符号尝试把以下内容的前两行位子做互换
Windows
Linux
echo 'WIndows\nLinux' | sed '1!G;h;$!d'
> Linux
> WIndows
我们来一步一步拆解'1!G;h;$!d'
, 多个command用;
做分隔
先看第一个command1!G
, !
是否定的意思, 所以这动作就是第1行不做G的动作.
第二个command就是h
.
最後一个command是$!d
, $
是最末行, 所以就代表最末行不做d的动作.
将第一行Windows读入pattern space
开始执行commands, 第一个1!G
因为是第一行不做;
接着执行第二个commandh
, 将pattern space的内容复制到hold space
然後执行最後一个command$!d
, 因为不是最末行所以执行, 把pattern space给清空
然後这行没有EOF, 继续读取下一行
将第二行Linux读入patttern space
开始执行commands, 执行1!G
把hold space的内容追加到pattern space
接着执行第二个commandh
, 将pattern space的内容复制到hold space
接着执行最後一个command$!d
, 因为是最末行所以不执行,
此时pattern space, 内容是Linux -> Windows,
碰到EOF就将pattern space的内容做输出
多点内容, 会发现这条命令其实就是倒序
echo 'WIndows\nLinux\nAndroid\nOS' | sed '1!G;h;$!d'
> OS
> Android
> Linux
> WIndows
再来,跟Hold space无关, 只是用上面的讲解方法, 讲解只输出最後一行
echo 'WIndows\nLinux' | sed 'N;D'
> Linux
一样来做command分解
先把第一行Windows读入pattern space
遇到第一个commandN
,
追加
读取下一行pattern space, 并且把这两行当作一行, 两行中间依然保有第一行的\n换行符号
然後执行最後一个commandD
删除目前pattern sapce, 遇到\n为止
所以Windows\n
就被删除, 只剩下Linux, 如下图
碰到EOF就将pattern space的内容做输出
一样来多点内容, 会发现这条命令其实就是只输出最後一行
echo 'WIndows\nLinux\nAndroid\nOS' | sed 'N;D'
> OS
<<: [Day 14] 用 MLFlow 记录模型实验,就。很。快
>>: [第14天]理财达人Mx. Ada-盘中零股交易(Intraday Odd Order)
30天铁人赛到今天就结束了,其实中途遇到很多的问题,因为我平时还有其他工作要做所以写铁人的时间都很赶...
Storybook 除了可以为元件攥写 Story 以外,也可以攥写纯内容的说明文件,不过纯内容的说...
实战演练开始前,稍微来讲解一下 Requests 的基本使用,当作是暖身。 用 Requests 送...
若是您选择以软件包或 Docker 这种 On Premises 的安装方式安装在本机电脑的话,那首...
这题对Python来说很友善,直接算就好了 每笔奖金算法 [(农场的面积/农场里动物的数目) * 农...