正则表达式小结,数据预处理中常用的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实现爬虫的博客也写得很好
正则表达式小结,数据预处理中常用的shell命令的更多相关文章
- 安卓日常开发和逆向中常用的shell命令与非shell命令
简述shell 命令与 非shell命令区别 shell命令不用先adb shell进入界面执行 非shell命令必须要 adb shell进入界面执行 基础非shell命令 1.安装app adb ...
- 工作中常用的 Shell 命令及技巧
调试 bash 脚本的技巧 加 -x 参数运行 bash 脚本时,会显示执行的语句 # 也可以在 demo.sh 中加上 set -x bash -x demo.sh 设置环境变量,然后通过如上方式运 ...
- hbase的常用的shell命令&hbase的DDL操作&hbase的DML操作
前言 笔者在分类中的hbase栏目之前已经分享了hbase的安装以及一些常用的shell命令的使用,这里不仅仅重新复习一下shell命令,还会介绍hbase的DDL以及DML的相关操作. hbase的 ...
- 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 ...
- 常用的shell命令整理
工作快一年了,shell命令也玩了一年了.还是有点积累的,下面是本人常用的. 1.pwd | xargs -i basename {} 获取当前所在目录的名称 2.ps -ef|grep -w ...
- 工作中常用的Linux命令:crontab命令
本文链接:http://www.cnblogs.com/MartinChentf/p/6060252.html (转载请注明出处) crontab是一个用来设置.删除或显示供守护进程cron执行的定时 ...
- 工作中常用的Linux命令:ipcs/ipcrm命令
本文链接:http://www.cnblogs.com/MartinChentf/p/6057100.html (转载请注明出处) ipcs 1. 命令格式 ipcs [resource-option ...
- 工作中常用的Linux命令:find命令
本文链接:http://www.cnblogs.com/MartinChentf/p/6056571.html (转载请注明出处) 1.命令格式 find [-H] [-L] [-P] [-D deb ...
- Lua 常用的shell命令
lua作为一种小巧的脚本语言,其函数等动作可以使用shell命令进行运行和调试,以下是几个常用的shell命令.基本格式是 lua [选项参数] [脚本参数] (1)%lua 程序名.lua ...
随机推荐
- c++ 十进制、十六进制和BCD的相互转换
#include <stdio.h> #include <string.h> #include <iostream> using namespace std; // ...
- [转帖]mysql数据库主从配置
mysql数据库主从配置 https://www.toutiao.com/i6680489302947791371/ 多做实验 其实挺简单的 很多东西 要提高自信 去折腾. 架构与我 2019-04- ...
- MySql-Mysql技术内幕~SQL编程学习笔记(1)
1.MySQL的历史,一些相关概念. 2.MySQL数据类型 *通常一个页内可以存放尽可能多的行,那么数据库的性能就越好,选择一个正确的数据类型至关重要. 1>UNSIGNED类型: 将数字类型 ...
- Linux 创建与删除(5)
相对于Windows下的右键新建文件与删除,我更喜爱Linux下的命令式创建与删除,真的方便.不过Windows下也可以借助工具来实现,比如git bash.cmder等等终端工具. 创建文件 新建文 ...
- linux工具之screen
screen官方网址:http://www.gnu.org/software/screen/ 参考文章:http://man.linuxde.net/screen 简介 Screen是一款由GNU计划 ...
- 逆向工程 生成mapper 接口的 重要方法
@Test public void testSelectByExample() { ItemsExample itemsExample = new ItemsExample(); ItemsExamp ...
- 如何配置vsftpd服务器
1,通过yum查看本地是否存在vsftpd rpm -qa|grep vsftpd [root@node2 ~]# rpm -qa |grep vsftpdvsftpd-3.0.2-25.el7.x8 ...
- ASP.NET中数据库数据导入Excel并打印(2)
大家可能觉得上面的代码比较复杂,因为上面对于对打印要求比较高的应用,是十分有效的.如果只是单单对数据进行导出,还可以使用简单的格式,比如使用以下的代码: Private Sub Page_L ...
- C#设计模式:访问者模式(Vistor Pattern)
一,访问者模式是用来封装一些施加于某种数据结构之上的操作.它使得可以在不改变元素本身的前提下增加作用于这些元素的新操作,访问者模式的目的是把操作从数据结构中分离出来. 二,代码 using Syste ...
- getchar、putchar、puts、gets
getchar(字符) 输入获取一个字符 putchar(字符) 输出控制台一个字符 scanf()格式化输入 printf() 格式化输出 gets(arr) 输入一个字符串给已经声明的数组ar ...