zoukankan      html  css  js  c++  java
  • 正则表达式小结,数据预处理中常用的shell命令

    数据预处理中,这部分命令非常有用。

    不需要编写代码,直接通过shell脚本通常就能修改文件格式.有时候sed和awk联合几乎能实现所有功能。

    管道命令 |

    重定向命令>,2>,>>,<,<<

    双向重定向命令 tee

    其他常见的命令包括:cut,grep,sort,wc,uniq,tee,tr,col,join,paste,expand,split,xargs等

    grep查找命令,

    sed行处理命令,

    awk字段处理命令

    cut 提取特定分割符分开的特定列

    这几个的差别:

    cut用于提取固定分割符号分割的列,grep用于查找符合正则条件的行,sed可以用于删除特定行、在指定行之前插入、删除新行、整行的替换、取出特定行;awk倾向于将一行分成数个字段进行处理,awk 一般也用于提取行中的特定列,比cut的功能更为强大,还可以加入条件判断、计算等功能

    head ,tail能可以读取之前之后的那些列

    sed -n '8p' test.c 打印第8行

    sort 可以对文字、数字等进行排序,结合uniq还可以合并重复项并统计出现次数

    wc可以统计一个文件中有多少行,多少字,多少字符

    tr可以进行文字的替换或者删除

    col可以删除一些奇怪的字符(尤其在windows和linux之间转换的时候)

    join或者past能够将两个文件中关联的行贴在一起形成一个新行

    expand将[tab]转换为空格

    split可以将一个大文件根据存储控件或者行数分割为若干小文键

    直接 cat a.txt b.txt>c.txt就可以合并文件

    关于sed命令和awk命令(这两个命令几乎可以解决格式规范的文本文件的大多数问题)的详细讲解,可以参照:

    http://opkeep.com/system/linux/sed_and-awk.html

    正则表达式,

    在一些命令,例如grep这样的字符串查找命令中,经常涉及正则表达式。

    grep在数据查找时,列出结果是以整行为单位的。然而正则表达式的匹配是每个词内各个字逐个比对。

    几个特殊字符:[:alnum:] [:alpha:]  [:blank:]  [:space:]  [:cntrl:]  [:digit:]  [:graph:]  [:lower:]  [:upper:]  [:print:]  [:digit:]  [:punct:]

    ^和$

    ^在[]内,标识反向选择利用[^a-zA-Z]代表字母;^[^a-zA-Z]代表该行不以字母开头

    $代表该行结束。例如查找空白行:

    grep -n '^$' regular_express.txt

    如果去除空白行和注释行,可以

    grep -v '^$'  filename | grep -v '^#'

    .和*

    . 代表一个字符。如g..d 可以是 good

    * 代表重复前面一个字符0到无穷多次的意思。go*d 可以是gd,god ,good等,如果是goo*d 则至少有一个o

    .*代表任意字符

    []代表可选范围

    {}代表重复次数,因为{}在shell中有特殊意义,所以需要转意

    ‘o{2}’ 代表含有两个o的单词

    'o{2,}'代表含有2个以上的o

    'o{2,5}’代表含有2-5个o

    ^word 代表word在行首

    word$ 代表word在行尾

    找出/etc目录下文件类型为链接文件的文件名

    ll /etc | grep '^l'

    sed命令是以行为单位,可以进行行的新增,替换,删除,插入,打印等等。可以打印,可以直接修改源文件,也可一进行重定向。(p359)

    awk是一个非常棒的数据处理工具,向较于sed经常用于一整行的修改,awk比较倾向于将行拆分为数个字段进行处理(p363)

    以上是shell中的正则表达式,如果要在python中使用正则表达式,可以参考这篇博客:

    http://blog.csdn.net/pleasecallmewhy/article/details/8929576

    这个讲解python实现爬虫的博客也写得很好

  • 相关阅读:
    txtexcelcvsxml存储测试数据
    webstorm 格式化代码(CTR+ALT+L)快捷键失效?
    解决jQuery触发dbclick事件同时也执行click事件
    css经典布局——头尾固定高度中间高度自适应布局
    js 如何访问跨域的iframe的元素
    获取textarea文本框所选字符光标位置索引,以及选中的文本值;textarea高度自适应,随着内容增加高度增加;获取输入框中的光标位置
    js 如何计算当年清明节日期
    验证插件使用笔记
    node 升级之后 执行gulp报错解决方案
    scss css管理相关
  • 原文地址:https://www.cnblogs.com/bobodeboke/p/3355717.html
Copyright © 2011-2022 走看看