加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 如何按长度对一系列行进行排序?

发布时间:2020-12-14 06:38:27 所属栏目:百科 来源:网络整理
导读:通常,我只想按照我们的源头和头文件的长度排列所有我的#include。 vim允许我以类似的方式对字母数字进行排序:{range} sort u。 在vim中,你如何按行的长度对行范围进行排序?这样线条越短,线条越长。 搜索互联网,我发现这个: :% s/.*/=printf("%03d",l
通常,我只想按照我们的源头和头文件的长度排列所有我的#include。

vim允许我以类似的方式对字母数字进行排序:{range} sort u。

在vim中,你如何按行的长度对行范围进行排序?这样线条越短,线条越长。

搜索互联网,我发现这个:

:% s/.*/=printf("%03d",len(submatch(0)))."|".submatch(0)/ | sor n | %s/..../

但是,这只能对整个文件进行排序,对我而言是黑魔法。我试图找出如何做同样的范围,例如从第4行到第18行,如:4,18 s / …你有什么想法吗?

用Awk过滤视觉选择

在vim中执行此操作的一种方法是在排序之前使用awk的length()函数过滤视觉选择。例如:

:'<,'> ! awk '{ print length(),$0 | "sort -n | cut -d  -f2-" }'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读