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

NLP第一节练习(2)

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

用到的Unix命令

  • paste
    Linux paste命令用于合并文件的列。

    • -d<间隔字符>或–delimiters=<间隔字符>  用指定的间隔字符取代跳格字符。
    • -s或–serial  串列进行而非平行处理。
  • cat
    cat 命令用于连接文件并打印到标准输出设备上。

    • -n 或 --number:由 1 开始对所有输出的行数编号。
    • -b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。
    • -s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。
    • -v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
    • -E 或 --show-ends : 在每行结束处显示 $。
    • -T 或 --show-tabs: 将 TAB 字符显示为 ^I。
    • -A, --show-all:等价于 -vET。
    • -e:等价于"-vE"选项;
    • -t:等价于"-vT"选项;
  • grep(globally search for regular expression and print)
    用于查看指定为正则表达式的模式

    • -v 或 --revert-match : 显示不包含匹配文本的所有行。
    • -c 或 --count : 计算符合样式的列数。
    • -b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
  • wc
    统计指定文件中的字节数、字数、行数,并将统计结果显示输出。

    • -c 统计字节数。
    • -l 统计行数。
    • -m 统计字符数。这个标志不能与 -c 标志一起使用。
    • -w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
    • -L 打印最长行的长度。
  • sed
    需要对文件的字符串进行系统地更改时,使用sed

    • -n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
    • -e :直接在命令列模式上进行 sed 的动作编辑;
    • -f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
    • -r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
    • -i :直接修改读取的文件内容,而不是输出到终端。
  • less
    less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。

    • -b <缓冲区大小> 设置缓冲区的大小
    • -e 当文件显示结束后,自动离开
    • -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
    • -g 只标志最后搜索的关键词
    • -i 忽略搜索时的大小写
    • -m 显示类似more命令的百分比
    • -N 显示每行的行号
    • -o <文件名> 将less 输出的内容在指定文件中保存起来
    • -Q 不使用警告音
    • -s 显示连续空行为一行
    • -S 行过长时间将超出部分舍弃
    • -x <数字> 将“tab”键显示为规定的数字空格
    • /字符串:向下搜索“字符串”的功能
    • ?字符串:向上搜索“字符串”的功能
    • n:重复前一个搜索(与 / 或 ? 有关)
    • N:反向重复前一个搜索(与 / 或 ? 有关)
    • b 向后翻一页
    • d 向后翻半页
    • h 显示帮助界面
    • Q 退出less 命令
    • u 向前滚动半页
    • y 向前滚动一行
    • 空格键 滚动一行
    • 回车键 滚动一页
    • [pagedown]: 向下翻动一页
    • [pageup]: 向上翻动一页
  • cut
    制表符分隔的文件

    • -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
    • -c :以字符为单位进行分割。
    • -d :自定义分隔符,默认为制表符。
    • -f :与-d一起使用,指定显示哪个区域。
    • -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除

练习一

产生二元语法

Bigrams = word pairs and their counts

解答

  • tr -sc ‘A-Za-z’ ‘\n’ < nyt_200811.txt > nyt.words
  • tail -n +2 nyt.words > nyt.nextwords
  • past nyt.words nyt.nextwords > nyt.bigrams

练习二

找出10个最常见的二元语法

解答

tr ‘A-Z’ ‘a-z’ < nyt.bigrams | sort | uniq -c | sort -nr | head -n 10

练习三

找出最常见的三元语法

解答

tail -n +3 nyt.words > nyt.thirdwords
paste nyt.words nyt.nextwords nyt.thirdwords > nyt.trigrams
cat nyt.trigrams | tr “[:upper:]” “[:lower:]” | sort | uniq -c | sort -rn | head -n 10

练习四

NYT文件中,有多少个字母全为大写的单词

解答

grep -P ‘^[A-Z]+$’ nyt.words | wc

练习五

共有多少4位字母的单词

解答

grep -P ‘^[a-zA-Z]{4}’ nyt.words | wc

练习六

共有多少不含元音的单词

先找出含元音的

解答

grep -v ‘[AEIOUaeiou]’ nyt.words | sort | uniq | wc

练习七

共有多少单音节单词

解答

tr ‘A-Z’ 'a-z" < nyt.words | grep -P ‘^[^aeiouAeiou]*[aeiouAEIOU]+[^aeiouAEIOU]*$’ | uniq | wc

练习八

把所有的“george”替换为“Jane”

解答

sed ‘s/George/Jane/’ nyt_200811.txt | less

你可能感兴趣的:(NLP_Unix命令_第一节练习(2))