首页 > 其他分享 >Lecture 4 数据整理

Lecture 4 数据整理

时间:2023-03-25 16:44:55浏览次数:32  
标签:grep tr sed words input 整理 Lecture txt 数据

练习

  1. 学习一下这篇简短的 交互式正则表达式教程.
  2. 统计words文件 (/usr/share/dict/words) 中包含至少三个a 且不以's 结尾的单词个数。这些单词中,出现频率前三的末尾两个字母是什么? sed的 y命令,或者 tr 程序也许可以帮你解决大小写的问题。共存在多少种词尾两字母组合?还有一个很 有挑战性的问题:哪个组合从未出现过?
cat /usr/share/dict/words | tr "[:upper:]" "[:lower:]" | grep -E "^([^a]*a){3}.*$" | grep -v "'s$" | wc -l 

> cat /usr/share/dict/words 打开这个文件
> tr "[:upper:]" "[:lower:]" tr命令将所有大写都转化为小写
> grep -E "^([^a]*a){3}.*$" -E 使用正则表达式,([^a]*a){3} 匹配零个或多个非"a"字符,后跟一个"a"字符匹配3次,之后匹配任意字符
> grep -v "'s$" "'s$" 匹配以's结尾的字符,grep -v 不显示匹配字符
> wc -l 这个命令计算输出的行数,输出结果为符合要求的单词数。
cat /usr/share/dict/words | tr "[:upper:]" "[:lower:]" | grep -E "^([^a]*a){3}.*$" | grep -v "'s$" | sed -E "s/.*([a-z]{2})$/\1/" | sort | uniq -c | sort | tail -n3
sed -E "s/.*([a-z]{2})$/\1/" "s/"进入替换模式 .*匹配任意字符 ([a-z]{2})$ 结尾处捕获两字符 "\1"使用捕获的字符替换
#!/bin/bash
for i in {a..z};do
 for j in {a..z};do
    echo  "$i$j"
 done
done
./all.sh > all.txt
cat /usr/share/dict/words | tr "[:upper:]" "[:lower:]" | grep -E "^([^a]*a){3}.*$" | grep -v "'s$" | sed -E "s/.*([a-z]{2})$/\1/" | sort | uniq > occurance.txt
diff --unchanged-group-format='' <(cat occurance.txt) <(cat all.txt) | wc -l
diff --unchanged-group-format='' 
将两个文件中相同的部分设置为空字符串,剩下的就是不相同的部分,之后输出行数即可
  1. 进行原地替换听上去很有诱惑力,例如: sed s/REGEX/SUBSTITUTION/ input.txt > input.txt。但是这并不是一个明智的做法,为什么呢?还是说只有 sed是这样的? 查看 man sed 来完成这个问题
  • sed s/REGEX/SUBSTITUTION/ input.txt > input.txt 表达式中后一个 input.txt会首先被清空,而且是发生在前的。所以前面一个input.txt在还没有被 sed 处理时已经为空了。在使用正则处理文件前最好是首先备份文件。
sed -i.bak s/REGEX/SUBSTITION/ input.txt
这段命令如果数据没有备份会自动创建.bak备份文件,直接对文件进行修改

标签:grep,tr,sed,words,input,整理,Lecture,txt,数据
From: https://www.cnblogs.com/viewoverlooking/p/17255032.html

相关文章

  • Python爬虫基础——05-高级数据类型
    2.10,数据类型高级2.10.1字符串高级:字符串常见操作包括:获取长度lenlen函数可以获取字符串的长度。查找内容find查找指定内容在字符串中是否存在,如果存在就返回该内容在字符......
  • m基于分段蚁群算法优化SVM的数据预测matlab仿真
    1.算法描述支持向量机(supportvectormachines,SVM)是二分类算法,所谓二分类即把具有多个特性(属性)的数据分为两类,目前主流机器学习算法中,神经网络等其他机器学习模型已经能......
  • 帮师姐把100个Excel中符合条件的数据,汇总到1个Excel里
    大家好,这里是程序员晚枫,B站也叫这个名~后台收到一个读者需求:人事部门有最近3年每个月全公司的工资Excel文件,一共500多个。现在和1位员工有一件劳动纠纷,需要把这1位员工散......
  • EL表达式获取数据及细节
    EL表达式没有空指针异常、索引越界异常;EL表达式没有字符串的拼接;<%@pageimport="www.hw.demo.Student"%><%@pageimport="java.util.ArrayList"%><%@pageimpor......
  • String数据类型
    当保存 64 位有符号整数时,String 类型会把它保存为一个 8 字节的 Long 类型整数,这种保存方式通常也叫作 int 编码方式。当保存的数据中包含字符时,String 类型......
  • 在windows系统中设置MySQL数据库
    MySQL搭建效果图step1:下载安装包https://downloads.mysql.com/archives/community/step2:解压后即完成安装step3:创建my.ini配置文件(注意路径)[mysqld]......
  • m基于分段蚁群算法优化SVM的数据预测matlab仿真
    1.算法描述       支持向量机(supportvectormachines,SVM)是二分类算法,所谓二分类即把具有多个特性(属性)的数据分为两类,目前主流机器学习算法中,神经网络等其他机器......
  • 2023爬虫学习笔记 -- MongoDB数据库
    一、下载安装mongodb1、下载地址https://www.mongodb.com/try/download/community2、一路下一步安装,路径不要出现空格中文等特殊字符3、设置环境变量将bin目录地址放到path......
  • Activity通过Argument向Fragment传递数据
    今天又学了Activity通过Argument向Fragment传递数据,这种方式是安卓给我们提供的,相比与用方法传递,它能传递更多的数据,更加常用。Argument传递数据需要使用Bundle容器,传递的......
  • mysql怎么删除重复数据并且保留其中一条
    现在有张加班表,一个人同一天只允许申请一次加班,就是加班日期和userid相同的数据应该只有一条,但是现在由于之前没有做限制,导致很多数据重复怎么通过sql删掉重复数据思路:......