awk RS,gensub

来源:互联网 发布:济南程序员兼职平台 编辑:程序博客网 时间:2024/05/19 13:29

文件file

abc$qwe$rt

yu$

1245$

abc$qwe$rtyu$1234&

abc$qwe$

5667

$899900$

abc$qwe$rtyu$12

34$

要求处理以后变成下面的样子

abc$qwe$rtyu$1245$

abc$qwe$rtyu$1234&

abc$qwe$5667$899900$

abc$qwe$rtyu$1234$

处理方式为:

awk -vRS=”abc” ‘NF{print RS gensub(“\n”,””,”g”)}’ file

解释说明:

-v:定义一个变量叫做RS,其中RS的内容为abcgensub的意思为将\n换行符全部用空替换掉,其中g表示的为全部的意思。最前面的NF的意思为剔除掉空行的行不进行输出,其中的空行包括空格,tab,以及只包含记录分隔符的行。

所以如果我们将文本按照下面的方式进行处理的话

awk -vRS=”abc” ‘{print RS gensub(“\n”,””,”g”)}’ file-------------------------->去掉NF

这时候第一条记录只时候只剩下的是abc,作为记录的分隔符,输出的时候会按照空行进行显示。

abc

abc$qwe$rtyu$1245$

abc$qwe$rtyu$1234&

abc$qwe$5667$899900$

abc$qwe$rtyu$1234$

最上面会显示一个abc,因为空行记录加上RS这时候会输出位第一行。


 

0 0
原创粉丝点击