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.mzph.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 或