良玉的博客 点点滴滴,积水成河_良玉的博客_页游、手游linux运维工程师之路

sed按条件多行合并为一行

其实就是一个多行合并为一行的问题, 仔细看看, 可以理解为当读取到lib关键字的时候倒序排列成一行, 这里我们利用G这个函数, 其目的就是把hold space里的内容追加到当前pattern中, 第一行时G追加hold space里的内容到pattern space后, 中间用'\n'连接, 当时hold space里没有内容, 其实就是添加了一个换行符而已, 然后继续执行命令, 没有匹配到lib关键字, 不执行花括号里的操作, 执行h函数操作, 把当前行的内容(就是第一行的内容后面多加了一个换行符)覆盖到hold space里, 第二行时执行G函数, 这时候pattern space里的内容已经变成了gb=line1\nclone=line1, 这时候也没有匹配到lib, 那么继续执行h, 这样就相当于倒序排列了内容. 执行到第四行, 匹配到lib时候, 我们把所有的换行符替换为空格, 并且打印内容, 执行n操作, 把stream执行到下一行, 用下一行的内容来覆盖hold space里的内容, 这样就相当于清楚了之前hold space里的记录.

阅读全文...

vi/vim的使用

Vi是“Visual interface”的简称,它在Linux上的地位就仿佛Edit程序在Dos上一样。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。
      Vi不是一个排版程序,它不象Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。
      Vi没有菜单,只有命令,且命令繁多。Vi有三种基本工作模式:命令行模式、文本输入模式和末行模式。

阅读全文...