首页

Linux如何删除重复行的代码?

文本处理时,经常要删除重复行,方法如下:

 方法一:

用sort+uniq,注意,单纯uniq是不行的。

1 sort -n test.txt | uniq

 方法二:

用sort+awk命令,注意,单纯awk同样不行,原因同上。

  sort -n $file | awk '{if($0!=line)print; line=$0}'

 方法三:

用sort+sed命令,同样需要sort命令先排序。

  sort -n $file | sed '$!N; /^.∗$/!P; D'

  Shell脚本

1
2
3
4
5
6
# !/bin/sh

file='test.txt'
sort -n $file | uniq
sort -n $file | awk '{if($0!=line)print; line=$0}'
sort -n $file | sed '$!N; /^(.*)$/!P; D'

  测试文件:

  yanggang@barry$ cat test.txt

  aaa

  bbbbb

  ccccc

  123

  aaaaa

  123

  bbb

  aaa

  执行结果:

  yanggang@barry$ ./diffRow.sh

  aaa

  aaaaa

  bbb

  bbbbb

  ccccc

  123

方法四:

复制代码代码如下:

@echo off

:: 删除重复的行,但不能保留空行

:: 对不符合变量命名规则、变量个数超过限制的文本都无法正确处理

::

(echo 清除重复行后的文件内容:& echo.)>str_.txt

for /f "delims=" %%i in (test.txt) do (

if not defined %%i set %%i=A & echo %%i>>str_.txt)

start str_.txt