Linux如何刪除重復行的代碼? linux刪除文件中重復行


文本處理時,經常要刪除重復行,方法如下:
 方法一:
用sort uniq,注意,單純uniq是不行的 。
1sort -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
【Linux如何刪除重復行的代碼? linux刪除文件中重復行】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

經驗總結擴展閱讀