例如,如何从 Vim 的配置文件 .vimrc 中过滤出所有快捷键映射的配置行以及它前面紧挨着的注释行?
我知道以下命令可以过滤出配置行:
sed -n '/^[^"].*<leader>/p' .vimrc
但是,如何连同该行前面紧邻的所有注释行也过滤出来,请高手帮忙解答,谢谢!
sed 是流编辑器,要解决这个问题要一些技巧,sed -n '/^"/{H;d};/^"/!{/<leader>/{H;x;p;s/.*//;x;d};/<leader>/!{s/.*//;x;d};};' vimrc 应该能够达到要求,sed 命令教程请见 http://www.grymoire.com/Unix/Sed.html,详细说明如下。
sed -n '/^"/{H;d};/^"/!{/<leader>/{H;x;p;s/.*//;x;d};/<leader>/!{s/.*//;x;d};};' vimrc
sed -n ' /^"/ { # 匹配到注释行,附加到缓冲空间 H # 删除模式空间,开始新一轮匹配 d } /^"/ !{ # 匹配到非注释行 /<leader>/ { # 匹配到目标行,附加到缓冲空间 H # 交换缓冲空间和模式空间 x # 打印模式空间 p # 清空缓冲空间 s/.*// x # 删除模式空间,开始新一轮匹配 d } /<leader>/ !{ # 非目标行,清除缓冲空间 s/.*// x # 删除模式空间,开始新一轮匹配 d } }' vimrc
这类问题可能还是用 awk 比较合适。
欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。 温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。