shell腳本單詞去重多個文件

shell腳本單詞去重多個文件

例如要求如下:

  • 有多個txt文件,每個文件內有多行單詞
    中間為英文的”,”,或者中文的”,”逗號作為分隔符。
world,世界
set,設置
good,好,商品
....
  • 將這些文件匯總去除重復的單詞,并輸出到一個新的文件內
  • 要求可以不區分大小寫

實現

#! /bin/bash
#------------------------------------------------------------------------------
# Filename:    filterWords.sh
# Usage:       ./filterWords.sh ~/test/
# Version:     1.0
# Date:        2018-04-04
# Author:      vincent
# Email:       N/A
# Description: 此腳本用于過濾多個文件的重復單詞,保留唯一的單詞,并輸出結果到新的文件
#              忽略大小寫,如果單詞重復,隨機保留釋義
#              支持格式:
#                  set,設置        #英文標點
#                  set,設置       #中文標點
#                  set,設置,集合   #支持多個“,”,但是默認第一分隔符前面為單詞
#                  SeT,設置        #支持不許分大小寫
# Notes:       N/A
#-------------------------------------------------------------------------------declare folderPath=$1
declare currentTime=$(date +%F"-"%H"-"%M"-"%S)
declare outputPath="${currentTime}_words.txt"
declare wordsCounts=0outputMsg()
{if [ $1 -ne 0 ]thenecho $2exit 1fi
}# 檢驗路徑是否為空
if [ -z $folderPath ]
thenfolderPath="."
else# 檢驗路徑是否存在if [ ! -d $folderPath ]thenecho "${folderPath} is not existed !"exit 1fi
fifileList=$(find $folderPath -type f -name "*.txt")
outputMsg $? "Find txt file failed!"
if [[ -z $fileList ]]
thenecho "No txt files are found."exit 1
fi# 支持英文的“,”或者中文的“,”分隔符,忽略大小寫 
# 這里在復制代碼的時候,注意格式,最好自己縮短為一行,否則很容易出錯
# 設置兩種分隔符
awk -F'[,|,]' 'BEGIN{key="";}{key=tolower($1);words[key]=$0}END{for(i in words) print words[i]}' $fileList > $outputPath
outputMsg $? "Filter words failed!"wordsCounts=$(wc -l $outputPath)
echo "Words counts: "
echo $wordsCounts

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536116.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536116.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536116.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

win10連接煙臺大學校園網

第一步 右鍵網絡圖標,打開網絡管理中心 第二步: 設置添加新的網絡,方法步驟如下: 第三步:新建VPN連接,注意協議為L2TP 第四步: 第五步: 第六步: 創建結束后進入更…

Angular國際化方案

Angular國際化方案 首先和大家推薦一個xlf文件的操作工具,支持合并和編輯功能,github,到release界面下載。 對于Angular國際化,官方提供了i18n方案,也就是標簽的方式,通過angular CLI來識別。國際化方案必須在編譯前定義下來,所以不能動態翻譯。也就是當有人切換語言時,…

模擬退火算法(TSP問題)

模擬退火算法解決TSP問題 算法思想 模擬退火算法(Simulate Anneal,SA)是一種通用概率演算法,用來在一個大的搜尋空間內找尋命題的最優解 模擬退火算法來源于固體退火原理,將固體加溫至充分高,再讓其徐徐…

2-docker 安裝

2-docker 安裝 Ubuntu 安裝 由于 apt 源使用 HTTPS 以確保軟件下載過程中不被篡改。因此,我們首先需要添加使用 HTTPS 傳輸的軟件包以及 CA 證書。 $ sudo apt-get update$ sudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \sof…

U-Net++粗略解釋

Paper:UNet: A Nested U-Net Architecture for Medical Image Segmentation u-net網絡的基本拓撲結構 目前最先進的圖像分割模型是各種個同樣的 encoder-decoder架構,他們具有一個關鍵的相似性:skip connections,它可以將編碼器…

Spring中的組合模式

組合模式是一種對象設計模式,它允許你將對象組合成樹形結構以表示“部分-整體”的層次結構,使得客戶端以統一的方式處理單個對象和對象的組合。在Spring框架中,組合模式被廣泛應用,讓我們深入分析一下。 在Spring中,組…

Docker+Nginx部署Angular

DockerNginx部署Angular 在部署Angular生產環境之前,需要電腦已經安裝docker。 添加Dockerfile 在已經完成的Angular項目的項目根目錄下添加Dockerfile文件。 Dockerfile文件內容: FROM nginx:1.11-1.11-alpine COPY index.html /usr/share/nginx/ht…

U-net網絡詳解

U-net網絡 簡單說一下網絡圖中各項所代表的內容: 藍/白色框表示feature map(特征圖) 藍色箭頭表示3x3卷積,主要用于特征提取 灰色箭頭表示skip-connection(跳躍連接,通常用于殘差網絡中),在這里是用于用于特征融合&…

Angular Web App部署Ubuntu Nginx

Angular Web App部署Ubuntu Nginx 當我們想發布Angular Web App的時候,我們想在開發的時候部署測試,那么這篇文章使用Nginx來部署我們的Angular 系統環境 lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.4 LTS Rele…

遺傳算法-01背包

遺傳算法 算法思想 遺傳算法(Genetic Algorithm, GA)是模擬達爾文生物進化論的自然選擇和遺傳學機理的生物進化過程的計算模型,是一種通過模擬自然進化過程搜索最優解的方法。 其主要特點是直接對結構對象進行操作,不存在求導和函…

Angular Web App部署Linux Nginx Https

Angular Web App部署Linux Nginx Https 提示:這篇文章是基于內網的 互聯網就開始將 WEB 服務從 HTTP 遷移到 HTTPS,而現在為了更快的推進 HTTPS 的普及,Chrome 將從 2018 年 7 月起標記所有的 HTTP 網站為不安全鏈接。 HTTPS 會逐漸成為 WEB 服務的標配,最最重要的是,它能…

SOLO算法簡讀

論文鏈接:https://arxiv.org/abs/1912.04488 代碼鏈接:https://github.com/WXinlong/SOLO 摘要 提出一種新的實例分割方法。與語義分割等其他密集預測任務相比,實例分割的難度要大得多。為了預測每個實例的掩碼,主流方法要么遵…

Rxjs的flatMap使用

Rxjs的flatMap使用 flatMap是Rxjs比較繞的一個概念,這里我們只是講解如何使用。在Rxjs 4.0版本時叫flatMap,在Rxjs 5.0時被更名為margeMap,現在flatMap作為margeMap的別名使用,這是考慮向下兼容。 官方flatMap的定義: Projects each sourc…

關于Loss的簡單總結

Dice Loss 參考:https://blog.csdn.net/l7H9JA4/article/details/108162188 Dice系數: 是一種集合相似度度量函數,通常用于計算兩個樣本的相似度,取值范圍為[0,1]。 s2∣X∩Y∣∣X∣∣Y∣s \frac{2|X ∩ Y|}{|X||Y|} s∣X∣∣Y…

Angular_PWA使用+Demo

Angular_PWA使用+Demo 什么是PWA PWA(Progressive Web App)利用TLS,webapp manifests和service workers使應用程序能夠安裝并離線使用。 換句話說,PWA就像手機上的原生應用程序,但它是使用諸如HTML5,JavaScript和CSS3之類的網絡技術構建的。 如果構建正確,PWA與原生應…

SOLOv2論文簡讀

論文:SOLOv2: Dynamic, Faster and Stronger 代碼:https://github.com/WXinlong/SOLO 摘要 主要提出了作者在SOLOv2中實現的優秀的實例分割方法,旨在創建一個簡單、直接、快速的實例分割框架: 通過提出動態學習對象分割器的mas…

Angular6_PWA

Angular6_PWA Angular正式發布了V6.0,我們已經可以利用對應的@angular/cli V6.0來直接開發PWA應用了。 第一步:安裝@angular/cli V6.0 如果你機器上有老版本,請先卸載。 打開你的終端,執行: npm install -g @angular/cli 或 cnpm install -g @angular/cli 安裝成功…

Ubuntu18.04 關于使用vnc的踩坑

由于種種原因,手上多了一臺可使用的桌面版Ubuntu,正好用來測試代碼,方便調試。因為只能遠程,所以需要配置遠程連接。因此就打算使用vnc進行遠程連接,誰料一路坎坷,特此記錄。 安裝 設置桌面共享 需要注意…

App_Shell模型

App_Shell模型 App Shell 架構是構建 Progressive Web App 的一種方式,這種應用能可靠且即時地加載到您的用戶屏幕上,與本機應用相似。 App shell是支持用戶界面所需的最小的 HTML、CSS 和 JavaScript,如果離線緩存,可確保在用戶重復訪問時提供即時、可靠的良好性能。這意…

Angular6_服務端渲染SSR

Angular6_服務端渲染 在使用服務端渲染之前,需要安裝最新版本的Angular。 npm install -g @angular/cli 或 cnpm install -g @angular/cli github項目 創建項目 ng new PWCat --routing 為項目添加universalng g universal --client-project=PWCat 或