文本处理(1)

文本处理工具最全整理上半部

一.抽取文件的工具
1.文件内容查看
cat 按顺序输出文本到屏幕
-A 显示所有的控制符
-n 显示行号
-b 非空行编号
-s 压缩连续的空行成一行
tac : 行倒序查看(最后一行变为第一行显示)
rev : 列倒序查看(一行内最后一个字符变为第一个字符显示)
more 分页显示文件 Enter键翻页
less 分页显示 /文本 搜索文本 n/N 跳到下一个或上一个匹配
2.文件截取
head/tail 显示文本前或后行内容
-c # 获取前或后#字节
-n # 获取前或后#行
tail -f 跟踪显示文件新追加内容,常用于日志监控
3.按列抽取
cut -d :指明分割符,默认Tab
-f :# 第#个字段
#,# 离散的多个字段,例如1,3,6
#-# 连续的多个字段,例如1-6
混合使用1-3,7
-c 按字符切割
–output-delimiter=STRING指定输出分隔符
paste 合并两个同行号的行到一行
-d 指定分隔符,默认tab
4.按关键字抽取
grep
二、分析文本的工具
1.文本数据统计 wc
wc -l 只计数行数
-w 只计数单词总数
-c 只计数字节总数
-m 字符总数
-L 最长行的长度
2.整理文本 sort
sort -r 执行反方向(由上至下)整理
-n 执行按数字大小整理
-t c 用c作为字段界定符
-k x 与-t一起使用,按照使用c字符分隔的x行整理
-R 随机排序
uniq 从输出中删除前后相接的重复的行,常用于与sort配合使用
-c 显示每行重复出现的次数
-d 仅显示重复过的行
-u 仅显示不曾重复的行 注:连续且完全相同方为重复
常和sort 命令一起配合使用:
sort userlist.txt | uniq -c
3.比较文件 diff patch
Example:1.通过ifconfig取网卡eth0的ip地址
ifconfig eth0 | grep ‘inet addr’ |cut -d: -f2 |cut -d’ ‘ -f1
2.取分区利用率
df|tr -s ‘ ‘ ‘%’ |cut -d “%” -f5
3.分析access_log,分析出登陆ip和次数,并按访问次数从多到少排序
cut -d’ ‘ -f1 access_log | sort | uniq -c | sort -nr
4.按uid排列用户
sort -t: -k3 -nr /etc/passwd
三、Linux文本处理三剑客
1. grep 文本过滤工具
–color=auto 对匹配到的文本着色显示
-v 显示不被匹配到的行
-i 忽略大小写
-n 显示匹配的行号
-c 统计匹配的行数
-o 仅显示匹配到的字符串
-q 不输出任何信息,配合$?使用
-A # 后#行
-B # 前#行
-C # 前后各#行
-e 同时匹配多个选项。
-w 匹配整个单词
-E 使用ERE(扩展正则)
-F 相当于fgrep,不支持正则
2.正则表达式
元字符分类
1)字符匹配:
. 匹配任意单个字符
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
[:alnum:] 字母和数字
[:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z
[:lower:] 小写字母 [:upper:] 大写字母
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
[:cntrl:] 不可打印的控制字符(退格、删除、警铃…)
[:digit:] 十进制数字 [:xdigit:]十六进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号
2) 匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数
匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数
* 匹配前面的字符任意次,包括0次
贪婪模式:尽可能长的匹配
.* 任意长度的任意字符
\? 匹配其前面的字符0或1次
\+ 匹配其前面的字符至少1次
\{n\} 匹配前面的字符n次
\{m,n\} 匹配前面的字符至少m次,至多n次
\{,n\} 匹配前面的字符至多n次
\{n,\} 匹配前面的字符至少n次
3)位置锚定:定位出现的位置
^ 行首锚定,用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
^PATTERN$ 用于模式匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\< 或 \b 词首锚定,用于单词模式的左侧
\> 或 \b 词尾锚定;用于单词模式的右侧
\<PATTERN\> 匹配整个单词
4)分组:\(\) 将一个或多个字符捆绑在一起,当作一个整体进行处理,如:
\(root\)\+
分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这
些变量的命名方式为: \1, \2, \3, …
\1 表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符
示例: \(string1\+\(string2\)*\)
\1 :string1\+\(string2\)*
\2 :string2
后向引用:引用前面的分组括号中的模式所匹配字符,而非模式本身
或者:\|
示例:a\|b: a或b C\|cat: C或cat \(C\|c\)at:Cat或cat
3.扩展的正则表达式:
egrep = grep -E
1)字符匹配:
. 任意单个字符
[] 指定范围的字符
[^] 不在指定范围的字符
2)次数匹配:
*:匹配前面字符任意次
?: 0或1次
+:1次或多次
{m}:匹配m次
{m,n}:至少m,至多n次
3)位置锚定:
^ :行首
$ :行尾
\<, \b :语首
\>, \b :语尾
4)分组:
()
后向引用:\1, \2, …
或者:
a|b: a或b
C|cat: C或cat
(C|c)at:Cat或cat
四、vim简介
命令模式光标跳转
行首行尾跳转:
^: 跳转至行首的第一个非空白字符
0: 跳转至行首
$: 跳转至行尾
行间移动:
#G、扩展模式:# :跳转至由#指定行
G:最后一行
1G, gg: 第一行
句间移动:
):下一句 (:上一句
段落间移动:
}:下一段 {:上一段
删除/剪切命令:
d: 删除命令,可结合光标跳转字符,实现范围删除
d$: 删除到行尾
d^:删除到非空行首
d0:删除到行首
dw:删除单词
dd: 删除光标所在的行
#dd:多行删除
D:从当前光标位置一直删除到行尾,留空行,等同于d
u:撤销最近的更改
使用多个“窗口”
多文件分割
vim -o|-O FILE1 FILE2 …
-o: 水平分割
-O: 垂直分割
在窗口间切换:Ctrl+w, Arrow
单文件窗口分割:
Ctrl+w,s: split, 水平分割
Ctrl+w,v: vertical, 垂直分割
ctrl+w,q:取消相邻窗口
ctrl+w,o:取消全部窗口
:wqall 退出

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/92464

(0)
S_peiS_pei
上一篇 2018-03-15 16:33
下一篇 2018-03-15 17:48

相关推荐

  • 浅谈Android应用HTTP框架选型

    我们知道,Android应用主要是通过客户端-服务器的方式进行数据交互,一般在APP开发时可能是一个接口对应一个显示模块,这样的设计会让客户端更新时很麻烦。为了解决这个问题,通常的做法是和服务端之间定义协议,设计显示模式,进而达到实时更新UI界面的目的,增加或删除显示模块时不需要让用户手动更新apk,这种方法最常见的就是在做活动或者广告的时候用到。以我们的优…

    2016-06-22
  • 加密算法、https、dns(主从、视图)

    第九周 2018/1/29

    2018-01-29
  • 马哥教育网络班22期+第1周课程练习

    马哥教育网络班22期+第1周课程练习 1、描述计算机的组成及其功能。 CPU (运算器+控制器), 存诸器(内存与外存),输入设备,输出设备。 运算器:对数据进行加工处理的部件(包括算述运算与逻辑运算)。 控制器:负责从存储器取出指令,按指令的要求发出控制信号,使各部件协调的,一步步的完成各种操作。 存储器:计算机记忆或暂存数据的部件 输入设备:人机接口,负…

    Linux干货 2016-08-12
  • 常用进程查看工具

    进程是我们学习Linux中常常接触的概念,他是程序被运行起来的一种表现形态。 了解进程的工作状态,管理进程的工作状态,可以让我们更清楚的知道,系统正在做什么,整体的进度是怎么样的。 想要了解进程的工作状态,我们就需要借助一些常用的工具来查看,想要对进程进行管理,我们也需要工具来实现。下面我们一起来看一看常用的查看进程工具有哪些,这些工具是如何使用的,有什么特…

    2017-05-09
  • 怎么删除邮件?

    linux邮件位置一般在/var/spool/mail/root下,如果想查看邮件,在屏幕上输入mail就可以查看了,输入之后会出现&符号,你想看哪一封邮件,直接在后面跟对应的数字就好了。 如果你感觉自己的邮件太多了,比较占内存,那就删了吧。 d 删除当前邮件,指针并下移。   d 3 删除编号为3 的邮件。   d1-100 删…

    2017-07-22
  • 信息论的熵

    1.  前言    熵的概念最早起源于物理学,用于度量一个热力学系统的无序程度。    在信息论里则叫信息量,即熵是对不确定性的度量。从控制论的角度来看,应叫不确定性。信息论的创始人香农在其著作《通信的数学理论》中提出了建立在概率统计模型上的信息度量。他把信息定义为“用来消除不确定性的东西”。在信息世界,熵越…

    Linux干货 2016-03-27