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

不需要编写代码,直接通过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实现爬虫的博客也写得很好

正则表达式小结,数据预处理中常用的shell命令的更多相关文章

  1. 安卓日常开发和逆向中常用的shell命令与非shell命令

    简述shell 命令与 非shell命令区别 shell命令不用先adb shell进入界面执行 非shell命令必须要 adb shell进入界面执行 基础非shell命令 1.安装app adb ...

  2. 工作中常用的 Shell 命令及技巧

    调试 bash 脚本的技巧 加 -x 参数运行 bash 脚本时,会显示执行的语句 # 也可以在 demo.sh 中加上 set -x bash -x demo.sh 设置环境变量,然后通过如上方式运 ...

  3. hbase的常用的shell命令&hbase的DDL操作&hbase的DML操作

    前言 笔者在分类中的hbase栏目之前已经分享了hbase的安装以及一些常用的shell命令的使用,这里不仅仅重新复习一下shell命令,还会介绍hbase的DDL以及DML的相关操作. hbase的 ...

  4. Hbase_02、Hbase的常用的shell命令&Hbase的DDL操作&Hbase的DML操作(转)

    阅读目录 前言 一.hbase的shell操作 1.1启动hbase shell 1.2执行hbase shell的帮助文档 1.3退出hbase shell 1.4使用status命令查看hbase ...

  5. 常用的shell命令整理

    工作快一年了,shell命令也玩了一年了.还是有点积累的,下面是本人常用的. 1.pwd | xargs -i basename {}   获取当前所在目录的名称 2.ps -ef|grep -w   ...

  6. 工作中常用的Linux命令:crontab命令

    本文链接:http://www.cnblogs.com/MartinChentf/p/6060252.html (转载请注明出处) crontab是一个用来设置.删除或显示供守护进程cron执行的定时 ...

  7. 工作中常用的Linux命令:ipcs/ipcrm命令

    本文链接:http://www.cnblogs.com/MartinChentf/p/6057100.html (转载请注明出处) ipcs 1. 命令格式 ipcs [resource-option ...

  8. 工作中常用的Linux命令:find命令

    本文链接:http://www.cnblogs.com/MartinChentf/p/6056571.html (转载请注明出处) 1.命令格式 find [-H] [-L] [-P] [-D deb ...

  9. Lua 常用的shell命令

    lua作为一种小巧的脚本语言,其函数等动作可以使用shell命令进行运行和调试,以下是几个常用的shell命令.基本格式是  lua [选项参数] [脚本参数] (1)%lua 程序名.lua     ...

随机推荐

  1. Tarjan水题系列(2):HNOI2012 矿场搭建

    题目: 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出口,使得无论哪一个挖煤点坍塌之后 ...

  2. getopt_long函数解析命令行参数

    转载:http://blog.csdn.net/hcx25909/article/details/7388750 每一天你都在使用大量的命令行程序,是不是感觉那些命令行参数用起来比较方便,他们都是使用 ...

  3. Java中的四种权限修饰符

    权限修饰符   public protected [default] private 同一个类 YES YES YES YES 同一个包 YES YES YES NO 不同包子类 YES YES NO ...

  4. 分布式事务解决方案汇总:2PC、3PC、消息中间件、TCC、状态机+重试+幂等(转)

    数据一致性问题非常多样,下面举一些常见例子.比如在更新数据的时候,先更新了数据库,后更新了缓存,一旦缓存更新失败,此时数据库和缓存数据会不一致.反过来,如果先更新缓存,再更新数据库,一旦缓存更新成功, ...

  5. 五、JVM — 类加载器

    回顾一下类加载过程 类加载器总结 双亲委派模型 双亲委派模型介绍 双亲委派模型实现源码分析 双亲委派模型的好处 如果我们不想要双亲委派模型怎么办? 自定义类加载器 推荐 回顾一下类加载过程 类加载过程 ...

  6. 自我笔记,Rides介绍

    Redis是一个key-value存储系统,和Memccached类似,支持存储的value类型相对更多,很大程度上补偿memcached这类key-value存储的不足 他提供了Java,c/c++ ...

  7. 网络爬虫之HTTPClient

    HTTPClient官网:http://hc.apache.org/httpcomponents-client-4.5.x/quickstart.html 问题一:明明浏览器请求有数据,可使用HTTP ...

  8. Nginx 的全局和虚拟主机配置

    Httpd.conf nginx.conf my-heavy-innode-4G.cnf php.ini  用中文注释 # user:指定 Nginx Worker 进程运行用户和用户组,默认 nob ...

  9. [转]WAREZ无形帝国

    一. 这会儿夜深了,他们昏昏睡去.随便哪栋建筑的某一个黑洞洞的窗口,你冷眼望去,没准就能看到一台白色的电脑,静静地卧在主人的书桌上.如果那主人睡得足够深,你就打开他的抽屉,现在你看到了什么?哦,我不是 ...

  10. uwsgi支持http长链接

    http1.1支持长链接,而http1.0不支持,所以,在切换http版本号或者升级服务端版本时候,尤其要注意这个造成的影响. 当客户端以http1.1长链接方式连接服务端时,服务端如果不支持1.1, ...