歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> 關於Unix >> 刪除兩個文件中相同記錄的行方法

刪除兩個文件中相同記錄的行方法

日期:2017/3/6 15:22:42   编辑:關於Unix
今天作系統權限的管控時需要將兩個文件中相同的內容全部刪除. 系統中所有的用戶記錄文件和沒有操作權限的用戶記錄文件.兩個文件相關後的結果就是所有能使用系統的用戶列表了. 研究了一兩個小時後終於大功告成了. 文件一內容如下: (f1.txt) 111 222 333 444 55 今天作系統權限的管控時需要將兩個文件中相同的內容全部刪除.
系統中所有的用戶記錄文件和沒有操作權限的用戶記錄文件.兩個文件相關後的結果就是所有能使用系統的用戶列表了.
研究了一兩個小時後終於大功告成了.

文件一內容如下: (f1.txt)
111
222
333
444
555
666
777
888
999
文件二內容如下: (f2.txt)
aaa
bbb
ccc
ddd
eee
111
fff
222
333
jjj
kkk
444
整理後的文件三內容如下: (f3.txt)
aaa
bbb
ccc
ddd
eee
fff
jjj
kkk

作法如下:
1.先合併兩個文件到一個臨時文件中
cat f1.txt f2.txt > temp1.txt
2. 對生成的臨時文件內容進行排序,將排序後的結果放到一個臨時文件中
sort +0 -0 -o temp2.txt temp1.txt /* 以第一個字段對文件temp1.txt進行排序,
將排序後的結果放到temp2.txt文件中 */
3. 對排序後的文件進行重複行的刪除
uniq -u temp2.txt > f3.txt /*對重複的行全部刪除*/
注: 如果想對重複的記錄保留一個,其餘的刪除則用法如下.
uniq -d temp2.txt > f3.txt /*對重複的行只保留一行*/

至此 f3.txt中的內容就是兩個文件相減後的內容了.

Copyright © Linux教程網 All Rights Reserved