awk 和 sed (Stream Editor)

时间:2023-02-05 03:52:00

awk 和 sed (Stream Editor)

1.sed

pattern space(模式空间)相当于车间sed把流内容在这里处理;

hold space(保留空间)相当于仓库,加工的半成品在这里临时储存(当然加工完的成品也在这里存储)。

h/H  :copy/append pattern space to hold space(复制或者追加模式空间的数据至保留空间);

g/G  :copy/append hold space to pattern space(复制或者追加保留空间的数据至模式空间);

n/N  :Read/append the next line of input into the pattern space.(读取或追加模式空间数据的下一行数据);

x         :exchange the contents of pattern space and hold space(交换模式空间和保留空间的数据);

d          :Delete pattern space.  Start next cycle. (删除模式空间内容);

将h/H和g/G以及x联合起来用,可以达到栈和队列的使用目的。

sed 'G' a.txt
因为hold space的初始为一个空行,并且始终没有修改其中的数据,所以结果是每行数据之后多了空行。

sed 'h;G' a.txt
模式空间复制到保留空间,将保留空间复制到模式空间,结果是复制每一行数据。

sed 'p' a.txt
输出模式空间的内容

sed -n '' a.txt
缺少了p命令,不能将pattern space中的数据进行输出, 结果是空

sed -n 'n;p' a.txt
n表示读取模式空间的下一行,结果是只显示偶数行

sed -n 'p;n' a.txt
奇数行显示

sed -n '1!G;h;$p' a.txt
倒序显示
在1或$命令中添加!,表示第一行或者最后一行不执行这个命令。

参考:

sed

出处:

awk 和 sed

sed命令简单使用-pattern space与hold space