1. 程式人生 > >如何使用shell從一個檔案中取出不在另一個檔案中的內容

如何使用shell從一個檔案中取出不在另一個檔案中的內容

本文展示如何利用shell從一個檔案中,(按行)找出不在另一個檔案中的內容。

#!/bin/bash
#@filename checkAddWord.sh

#allword.txt         存放總詞庫(每行一個)
#newword.txt         存放新增詞(每行一個)
#newword.add.txt     在cygwin中執行sh checkAddWord.sh後,可新增詞存入此檔案

#唯一化總庫
cat allword.txt | sort | uniq | sed -e "s/^\s*\xEF\xBB\xBF//g" | sed -e "{N;s/\r//g}" > allword.tmp.txt
mv allword.tmp.txt allword.txt

#唯一化新詞庫
cat newword.txt | sort | uniq | sed -e "s/^\s*\xEF\xBB\xBF//g" | sed -e "{N;s/\r//g}" > newword.tmp.txt
mv newword.tmp.txt newword.txt

#得到已使用詞庫
cat allword.txt newword.txt | sed -e "{N;s/\r//g}" | sort | uniq -c | grep "^\s*[2-9] " | sed -e "s/^\s*[2-9]\s//g" | sed -e "{N;s/\r//g}" | sed -e "s/^\s*\xEF\xBB\xBF//g" > usedword.txt
 
#得到新詞庫
cat newword.txt usedword.txt | sed -e "{N;s/\r//g}" | sort | uniq -c | grep "^\s*1 " | sed -e "s/^\s*1\s//g" | sed -e "s/^\s*\xEF\xBB\xBF//g" | sed -e "{N;s/\n/\r\n/g}" > newword.add.txt

#刪除已使用詞庫
rm -rf usedword.txt

echo "如下關鍵詞可新增:"
cat newword.add.txt