日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

shell脚本单词去重多个文件

發布時間:2025/3/8 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

總結

以上是生活随笔為你收集整理的shell脚本单词去重多个文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。