sed,awk学习

一.n,N

next(n)输出模式空间的内容(如果运行sed时有-n则不会输出),然后读取新的输入内容。

Next(N)通过读取新的输入行,并将它添加到模式空间的现有内容之后来创建多行模式空间。模式空间最初的内容和新输入行之间用换行符分隔。在模式空间中嵌入的换行符可以利用转义序列‘\n’来匹配。在多行模式空间中,元字符‘^’匹配空间中的第一个字条,而不匹配换行符后面的字符。同样,’$‘只匹配模式空间中最后的换行符,而不匹配任何嵌入的换行符。

控制流:n/N后继续执行n/N后的动作,而不是直接回到最开始处执行

二.d,D

d删除模式空间的内容并导致新读入的输入行,从而在脚本的顶端重新执行命令。

D删除模式空间中直到第一个嵌入的换行符的这部分。他不会导致读入新的输入行,他从脚本的顶端重新匹配模式空间剩余的内容。

控制流:回到脚本顶端

三.p,P

在执行完脚本的最后一个命令后,模式空间的内容自动输出(-n选项或#n抑制这个默认的动作)。因此,当默认的输出被抑制或脚本的控制流更改,一直不能到达脚本的底部时,需要使用打印命令(P或p)。注意P或p不改变模式空间的内容。

p:打印模式空间的内容

P:输出多行模式空间的第一部分,直到第一个嵌入的换行符为止。

注意:

对于最后一行执行N/n命令,不会执行脚本中N/n后面的命令,这样的话当总行数是奇数的时候,最后一行不会执行N后面的命令,但如果没有用-n来禁止打印模式空间的内容,任然会打印最后一行的内容。可以使用$!N命令,这个命令的意思是除了最后一行其他的行均执行N

 

awk有许多内置变量用来设置环境信息,这些变量可以被改变,下面给出了最常用的一些变量:

ARGC 命令行参数个数

ARGV 命令行参数排列

ENVIRON 支持队列中系统环境变量的使用

FILENAME awk浏览的文件名

FNR 浏览文件的记录数

FS 设置输入域分隔符,等价于命令行 -F选项 NF 浏览记录的域的个数

NR 已读的记录数

OFS 输出域分隔符

ORS 输出记录分隔符

RS 控制记录分隔符

以空格为分段符:

awk 'BEGIN {RS=" ";}{print $0}' link.txt

awk实现 文本内的换行符 为分隔符,输出变为逗号:(参考 https://blog.csdn.net/weixin_30817749/article/details/99331674)

awk 'BEGIN{ORS=","}{print $0}' ldap_member.log

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章