`

vi Uniq - Removing duplicate lines

 
阅读更多

想在vi里直接删除掉重复的行,go了下,发现和shell里其实一样的,不过花样会更多,go到一篇很赞的文章,故记录下,同时也分享下这个网站,vi tips 相当赞

 

转载自:http://vim.wikia.com/wiki/Uniq_-_Removing_duplicate_lines

 

The following command will sort all lines and remove duplicates (keeping unique lines):

:sort u

If you need more control, here are some alternatives.

There are two versions, the first leaves only the last line, the second leaves only the first line.

g/^\(.*\)$\n\1$/d
g/\%(^\1$\n\)\@<=\(.*\)$/d

Breakdown of the second version:

g//d <-- Delete the lines matching the regexp
\@<= <-- If the bit following matches, make sure the bit preceding this symbol directly precedes the match
\(.*\)$ <-- Match the line into subst register 1
\%( ) <--- Group without placing in a subst register.
^\1$\n <--- Match subst register 1 followed by end of line and the new line between the 2 lines

In this simple format (matching the whole line), it's not going to make much difference, but it will start to matter if you want to do stuff like match the first word only.

This does a uniq on the first word in the line, and deletes all but the first line:

g/\%(^\1\>.*$\n\)\@<=\(\k\+\).*$/d

 

See also Edit See also section

Comments Edit Comments section

Here are some more Vim-native ways for removing duplicate lines. This time they don't have to be adjacent. Line order is preserved.

This one can be a bit slow.

:nno \d1 :g/^/m0<CR>:g/^\(.*\)\n\_.*\%(^\1$\)/d<CR>:g/^/m0<CR>

This is faster. Uses mark l .

:nno \d2 :g/^/kl\|if search('^'.escape(getline('.'),'\.*[]^$/').'$','bW')\|'ld<CR>

Following uses a substitute to delete all repeated lines (leaving only the first line, while deleting following duplicate lines). This is a variation on the g//d method.

%s/^\(.*\)\(\n\1\)\+$/\1/

 

 

分享到:
评论

相关推荐

    `sort | 的一个版本uniq -c` 输出在解析每一行时实时更新

    uniqtoosort | uniq -c版本sort | uniq -csort | uniq -c输出在解析每一行时实时更新。用法将一些基于行的东西输送到uniqtoo ,就像你在sort | uniq -csort | uniq -c 。这是一个计算此存储库中文件扩展名的示例,...

    uniqtoo:`sort |的版本uniq -c`,其输出在解析每一行时实时更新

    的一个版本sort | uniq -c sort | uniq -c与输出,在实时更新的各行被解析。 用法 基于线进入管的东西uniqtoo一样的,你会进入sort | uniq -c sort | uniq -c 。 这是一个示例,该示例计算此存储库中文件的扩展名...

    uniq-stream:优衣库

    npm install uniq-stream 用法 通过管道传输数据,并通过管道传输去重复数据 例子 var uniq = require ( 'uniq-stream' ) var split = require ( 'split' ) var fs = require ( 'fs' ) fs . createReadStream ( '...

    rh-nodejs6-nodejs-lodash.uniq-4.5.0-2.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    uniq-object-stream:在 JSON 对象上流式传输 uniq

    【标题】"uniq-object-stream:在 JSON 对象上流式传输 uniq" 在JavaScript开发中,数据处理是一项常见的任务,特别是当处理大量数据时。`uniq-object-stream` 是一个专门用于处理JSON对象流的库,它提供了类似Linux...

    rh-nodejs6-nodejs-lodash.uniq-4.5.0-1.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    uniqify:uniq和uniq -c用于网络! http

    cljsbuild-example-simple 这是一个使用 , 和的示例Web应用程序。 它演示了如何使用lein-cljsbuild将ClojureScript构建到JavaScript中。 要处理此示例项目,您首先需要安装 。 运行应用 设置并启动服务器,如下所...

    windows下的uniq

    在Windows操作系统中,尽管不像Unix/Linux系统那样内置了`uniq`命令,但通过特定的工具,用户同样可以实现类似的功能。这里提到的"windows下的uniq"实际上可能是指一个名为UNIQUE.exe的程序,它用于处理数据,去除...

    cargo-llvm-lines:每个通用功能的LLVM IR的行数

    未优化的LLVM IR 首先使用grep'^ define'仅获得定义函数体的行然后在我的编辑器中使用正则表达式替换,以删除@之前的所有内容以及(之后的所有内容( 然后排序| uniq -c安装用cargo install cargo-llvm-lines 。...

    uniq-android:优衣库应用

    优衣库(Uniqlo)是一家知名的日本服装零售商,其在安卓平台上的应用程序"uniq-android"为用户提供了方便的在线购物体验。这个应用是用Java编程语言开发的,这表明了Java在移动应用开发领域的广泛应用,尤其是在...

    linux下uniq和sort命令用法详解.docx

    Linux 下 uniq 和 sort 命令用法详解 uniq 命令是 Linux 中的一个文本处理命令,用于去除文本中的重复行。该命令读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用...

    linux使用lsof命令查看文件打开情况

    在Linux操作系统中,掌握如何查看文件的打开情况对于系统管理和故障排查至关重要。`lsof`(list open files)命令是一个非常实用的工具,它能够显示系统中所有打开的文件和对应的进程信息。本文将深入探讨`lsof`命令的...

    rotal:从流中获取运行中的运行次数。 意在替换`sort | 输入为流时,uniq -c`

    `rotal` 是一个 Python 实现的工具,其设计目的是为了高效地处理数据流,特别是从标准输入(stdin)中读取数据,并计算其中各元素出现的次数,类似于 Unix shell 中的 `sort | uniq -c` 命令组合。这个工具在处理大...

    巧用Linux命令完成统计排序功能.docx

    3. `sort data | uniq -c | sort -k 1 -n -r`:经过`uniq -c`处理后,输出的格式类似于“2 data”,其中第一列是计数,第二列是原始数据。接下来的`sort`命令用于对这些记录进行二次排序。`-k 1`指定按照第一列(即...

    071204awk应用1

    - `netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn`: 此命令用于统计不同TCP连接状态的数量,`$6`代表状态,排序后可快速找出异常状态。 - `netstat -n | awk '/^tcp/ {++S[$NF]};END {for(a in S) print ...

    linux常用命令

    tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr | head -n 20 ``` - `tcpdump -i eth0`: 指定网卡接口为eth0。 - `-tnn dst port 80`: 捕获目标...

    linuxuniq命令参数及用法详解---检查及删除文本文件中重复出现的行列知识.pdf

    Linux中的`uniq`命令是一个非常实用的工具,用于处理文本文件中的重复行。它主要用于检查和删除连续重复的行,使文件内容更加简洁。在数据分析、日志分析和其他需要处理大量文本数据的场景中,`uniq`命令尤其有用。...

    在Linux的命令行中实现字符出现频率统计的方法.docx

    接着,使用`sort`进行排序,`uniq -c`计算唯一行的数量,最后`sort -rn`按降序排列,并使用`head`显示前10个最常见的单词。 ``` cat man.txt | tr ' ' '\n' | tr [:upper:] [:lower:] | tr -d [:punct:] | grep -...

    vue-uniq-ids-Vue.js 2.x插件,可帮助使用与ID相关的属性,且无副作用-Vue.js开发

    VueUniqIds一个Vue.js插件,可帮助使用与ID相关的属性而没有副作用这是使用组件的趋势。 组件很酷,它们是VueUniqIds一个Vue.js插件,可以帮助使用与ID相关的属性,而不会产生副作用。使用组件是一种趋势。...

    apache网站调优

    5. **统计访问量最大的URL**:使用`cat access_log | grep "20/Oct/2008:00" | awk '{print $8}' | sort | uniq -c | sort -nr | head -n 10`命令来找出当天被请求最多的前10个URL,这对于优化热门资源的处理方式...

Global site tag (gtag.js) - Google Analytics