NLP_Unix命令_第一节练习(1)

NLP第一节练习(1)

文本无处不在,我们可以利用Unix的命令行做一些简单的操作,有的甚至比编写python程序要快得多。

用到的Unix命令

  • man
    查看命令的使用
    e.g. man tr

  • 输入/输出重定向

    • > 输出到文件
    • < 从文件输入
    • | 组合
  • tr
    tr是个简单的替换命令,从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。
    tr [OPTION]…SET1[SET2]

    • -s 如果匹配于SET1的字符在输入序列中存在连续的重复,在替换时会被统一缩为一个字符的长度
    • -c 反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换。
    • -d 删除匹配SET1 的内容,并不作替换。
    • -t 削减 SET1 指定范围,使之与 SET2 设定长度相等
    • -cs 如果指写了-c,则-s适用于SET1的补码中的字符
    • -cd 删除所有SET1补码中的字符
  • sort
    将文本文件内容加以排序,sort可针对文本文件的内容,以行为单位来排序。
    sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][–help][–verison][文件]

    • -b 忽略每行前面开始出的空格字符。
    • -c 检查文件是否已经按照顺序排序。
    • -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
    • -f 排序时,将小写字母视为大写字母。
    • -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
    • -m 将几个排序好的文件进行合并。
    • -M 将前面3个字母依照月份的缩写进行排序。
    • -n 依照数值的大小排序。
    • -o<输出文件> 将排序后的结果存入指定的文件。
    • -r 以相反的顺序来排序。
    • -t<分隔字符> 指定排序时所用的栏位分隔字符。
    • +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
  • uniq
    Linux uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用
    uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][–help][–version][输入文件][输出文件]

    • -c或–count 在每列旁边显示该行重复出现的次数。
    • -d或–repeated 仅显示重复出现的行列。
    • -f<栏位>或–skip-fields=<栏位> 忽略比较指定的栏位。
    • -s<字符位置>或–skip-chars=<字符位置> 忽略比较指定的字符。
    • -u或–unique 仅显示出一次的行列。
    • -w<字符位置>或–check-chars=<字符位置> 指定要比较的字符。
    • –help 显示帮助。
  • head
    head命令用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容。

    • -q 隐藏文件名
    • -v 显示文件名
    • -c<字节> 显示字节数
    • -n<行数> 显示的行数
  • rev
    rev命令将文件中的每行内容以字符为单位反序输出

    • -n<数字>:指定显示头部内容的行数;
    • -c<字符数>:指定显示头部内容的字符数;
    • -v:总是显示文件名的头信息;
    • -q:不显示文件名的头信息。
  • tail
    用于显示指定文件末尾内容,常用查看日志文件

    • -f 循环读取
    • -q 不显示处理信息
    • -v 显示详细的处理信息
    • -c<数目> 显示的字节数
    • -n<行数> 显示行数
    • –pid=PID 与-f合用,表示在进程ID,PID死掉之后结束.
    • -q, --quiet, --silent 从不输出给出文件名的首部
    • -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

例子1

统计文本中的单词数

  • input: nyt_201811.txt
  • output: 文件中的单词表及其对应频次

解答

tr -sc ‘A-Za-z’ ‘\n’ < nyt_201811.txt | sort | uniq -c

可以使用head只列出一些结果

例子2

通过将所有大写字母转换成小写字母来合并大小写

解答

  • 首先用换换行符分割,把连续的字符以单独的字符表示
  • 将所有的大写字母替换成小写字母
  • 以字母序排列
  • 合并重复项并计数

tr -sc ‘A-Za-z’ ‘\n’ < nyt_201811.txt | tr ‘A-Z’ 'a-z‘ | sort | uniq -c

或者

tr -sc ‘A-Za-z’ ‘\n’ < nyt_201811.txt | tr ‘[:upper:]’ ‘[:lower:]’ | sort | uniq -c

例子3

不同的元音序列的频次

解答

tr -sc ‘A-Za-z’ ‘\n’ < nyt_201811.txt | tr ‘A-Z’ ‘a-z’ | tr -sc ‘aeiou’ ‘\n’ | sort | uniq -c

例子4

找出最常用的50个单词

解答

tr -sc ’A-Za-z’ ‘\n’ < nyt_201811.txt | sort | uniq -c | sort -nr | head -n 50

例子5

找出NYT中以’zz’结尾的单词

解答

tr -sc ’A-Za-z’ ‘\n’ < nyt_201811.txt | tr ‘A-Z’ ‘a-z’ | rev | sort | uniq -c | rev | tail -n 10

??发现不止这么少以’zz‘结尾

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值