Linux系统上的文本处理工具

Linux系统上的文件处理工具

我们都知道在计算机中,存在大量的文件,这些文件中包含大量的信息。可是有些时候,为了工作的效率,我们在茫茫信息中提取出我们所需要的信息,这样的技能就显得尤为重要。Linux系统上为我我们提供了多种多样的文本处理工具,下面我们来简单说一下。

查看文件内容我们可以使用less命令,cat命令,more命令等等

cat

cat [OPTION]... [FILE]...

-E: 显示行结束符$

-n: 对显示出的每一行进行编号

-A:显示所有控制符

-b:非空行编号

-s:压缩连续的空行成一行

cat命令是把整个目标文件的内容整个打印出来,如果我们遇到文件非常庞大的情况,我们可以使用less和more来进行查看

less:一页一页地查看文件或STDIN输出

查看时有用的命令包括:

/keyword 关键字查询

n/N跳到下一个or 上一个匹配

less命令其实就是man命令使用的分页器

more:分页查看文件

more [OPTIONS...] FILE...

-d: 显示翻页及退出提示

如果我们想要显示文本前或后n行内容

head

head [OPTION]... [FILE]...

-c #: 指定获取前#字节

-n #: 指定获取前#行

-#:指定行数

tail

tail

tail [OPTION]... [FILE]...

-c #: 指定获取后#字节

-n #: 指定获取后#行

-#:

-f: 跟踪显示文件新追加的内容,常用日志监控

如果我们想要在使用-f选项的同时,进行其他工作,可以在最后加上&符号,将其调到后台运行。

按列抽取文本

cut

cut [OPTION]... [FILE]...

-d DELIMITER: 指明分隔符,默认tab

-f FILEDS:

#: 第#个字段

#,#[,#]:离散的多个字段,例如1,3,6

#-#:连续的多个字段, 例如1-6

混合使用:1-3,7

-c 按字符切割

--output-delimiter=STRING指定输出分隔符

显示文件或STDIN数据的指定列

cut -d:-f1 /etc/passwd

cat /etc/passwd | cut-d:-f7

cut -c2-5 /usr/share/dict/words

paste 合并两个文件同行号的列到一行

paste [OPTION]... [FILE]...

-d 分隔符:指定分隔符,默认用TAB

-s : 所有行合成一行显示

paste f1 f2

paste -s f1 f2

有时候我们需要对文本进行分析

wc:收集文本统计数据

计数单词总数、行总数、字节总数和字符总数

可以对文件或STDIN中的数据运行

例如:$wcstory.txt

39 237 1901 story.txt

行数 字数 字符数

使用 -l 来只计数行数

使用 -w 来只计数单词总数

使用 -c 来只计数字节总数

使用 -m 来只计数字符总数

sort:文本排序

把整理过的文本显示在STDOUT,不改变原始文件

$sort [options] file(s)

-r 执行反方向(由上至下)整理

-n 执行按数字大小整理

-f 选项忽略(fold)字符串中的字符大小写

-u 选项(独特,unique)删除输出中的重复行

-t c 选项使用c做为字段界定符

-k X 选项按照使用c字符分隔的X列来整理能够使用多次

uniq:从输入中删除重复的前后相接的行

uniq[OPTION]... [FILE]...

-c: 显示每行重复出现的次数;

-d: 仅显示重复过的行;

-u: 仅显示不曾重复的行;

连续且完全相同方为重复

常和sort 命令一起配合使用:

sort userlist.txt | uniq-c

linux上文本处理三剑客:

grep,egrep,fgrep:文本过滤工具(模式:pattern)工具;

grep:基本正则表达式,-E,-F

egrep:扩展正则表达式,-G,-F

fgrep:不支持正则表达式

sed:stream editor,流编辑器;文本编辑器工具;

awk:linux上的实现为gawk,文本报告生成器(格式化文本);

grep:Global search REgularexpression and Print out the line.

作用:文本搜索工具,根据用户指定的“模式”对目标文件进行逐行匹配检查;打印匹配到的行。

模式:由正则表达式字符及文本字符所编写的过滤条件

正则表达式REFEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符不表示字符字面意义,而表示控制或通配的功能。

正则表达式分为两类:

基本正则表达式:BRE

扩展正则表达式: ERE

grep:

grep [OPTIONS] PATTERN [FILE...]

OPTIONS:

--color=auto:对匹配到的文本着色后高亮显示;

-i:ignorecase,忽略字符的大小写;

-o:仅显示匹配到的字符串本身;

-v, --invert-match:显示不能被模式匹配到的行;

-E:支持使用扩展的正则表达式元字符;

-q, --quiet, --silent:静默模式,既不输出任何信息;

-A#:after,后#行

-B#:before,前#行

-C#:context,前后各#行

说到这里我们就非常有必要说一下正则表达式

正则表达式:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能。

基本正则表达式元字符:

字符匹配

.:匹配任意单个字符

[]:匹配指定范围内的任意单个字符;

[^]:匹配指定范围外的任意单个字符;

[:digit:] [:lower:] [:upper:] [:alpha:] [:alnum:] [:punct:] [:space:]

匹配次数:用在要指定其出现的次数的字符的后面,用于限制其前面字符出现的次数;默认工作于贪婪模式

*:匹配其前面的字符任意次:0.1.多次;

.*:匹配任意长度的任意字符

/?:匹配其前面的字符0次或1次;既其前面的字符是可有可无的;

\+:匹配其前面的字符1次或多次;既其前面的字符要出现至少1次;

\{m\}:匹配其前面的字符m次;

\{0,n}:至多n次

\{m,}:至少m次

位置锚定:

^:行首锚定;用于模式的最左侧;

$:行尾锚定;用于模式的最右侧;

^PATTERN$:用于PATTERN来匹配整行;

^$:空白行

^[[:space:]]*$:空行或包含空白字符的行;

单词:非特殊字符组成的连续字符(字符串)都称为单词;

\<或\b:词首锚定,用于单词模式的左侧;

\>或\b:词尾锚定,用于单词模式的右侧;

\<PATTERN>:匹配完整单词;

分组及引用

\(\):将一个或多个字符捆绑在一起,当做一个整体进行处理;

Note:分组括号中的模式匹配到的内容会被正则表达式引擎自动记录于内部的变量中,这些变量为:

\1:模式从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符;

\2:模式从左侧起,第二个左括号以及与之匹配的右括号之间的模式所匹配到的字符;

\3:

...

实例:\(string1\+\(string2\)*\)

\1: string1\+\(string2\)*

\2: string2

后向引用:引用前面的分组括号中的模式所匹配字符(而非模式本身)

扩展正则表达式:

egrep= grep -E

egrep [OPTIONS] PATTERN [FILE...]

扩展正则表达式的元字符:

字符匹配:

. 任意单个字符

[] 指定范围的字符

[^] 不在指定范围的字符

次数匹配:

*:匹配前面字符任意次

?: 0或1次

+:1次或多次

{m}:匹配m次

{m,n}:至少m,至多n次

位置锚定:

^ :行首

$ :行尾

\<, \b :语首

\>, \b :语尾

分组:

()

后向引用:\1, \2, ...

例:

a|b

C|cat: C或cat

(C|c)at:Cat或cat

时间: 2024-11-09 03:06:48

Linux系统上的文本处理工具的相关文章

Linux系统上的文本处理工具之sed

sed命令 sed是一种在线编辑器.行编辑器,一次处理一行内容,在处理时,把当前处理的行存储在临时缓冲区当中,该缓冲区称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完毕后,把缓冲区的内容送到标准输出:然后紧接着去处理下一行,重复完成相同的操作,直至文件结尾:sed处理的整个过程中,对象文件中的内容并没有改变,除非使用重定向来存储处理后的结果.sed主要用来自动编辑一个或多个文件,简化对文件的反复操作过程. sed跟我们之前讲过的文本处理工具vi

Linux系统上的文本处理工具练习题

1.显示/proc/meminfo文件中以大小s开头的行:(要求:使用两种方式) 2.显示/etc/passwd文件中不以/bin/bash结尾的行 3.显示用户rpc默认的shell程序 4.找出/etc/passwd中的两位或三位数 5.显示/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面存非空白字符的行 6.找出"netstat -tan"命令的结果中以'LISTEN'后跟0.1或多个空白字符结尾的行 7.添加用户bash.testbash.basher以及no

Linux系统中的文本处理工具

在大家刚接触Linux操作系统,首先都会让你了解linux的哲学思想:一切皆文件:那么今天就带大家认识linux中的一些文本查看工具. 1.cat和tac 连接文件并在标准输出上打印:其中cat是正向显示:tac是倒着显示 格式:cat [  options ]... [ FILE ]... 选项: -E filename 能看到行的结束符 -A filename 能看到tab键 回车 -n filename 加行号 -s filename 压缩空行(连续相邻的空行) -b 加行号,但空行不加 

Linux系统上的vim编辑器

vim编辑器作为Linux系统上的文本处理工具三剑客之一,被广大运维小伙伴所喜爱,马哥称之为"尤物"的编辑器.下面简单介绍一下vim编辑器. 文本编辑器: 文本:纯文本,ASCII text: 文本编辑种类: 行编辑器:所谓行编辑器是指一行一行来处理的工具,如sed 全屏编辑器:编辑空间占据整个屏幕,如nano,vi vi:Visual Interface vim:Vi IMproved,是vi的增强版,vim是模块化的编辑 其他编辑器: gedit:一个简单的图片编辑器 gvim:一

如何实现在虚拟机上的Linux系统上安装vmware tools

如何实现在虚拟机上的Linux系统上安装vmware tools工具 作者:何扬   时间:2017年9月23日  上午8:29:16 [安装目的]Linux下需要安装VMware Tools工具来实现主机和虚拟机直接文件复制粘贴功能. [基本流程] 1.首先,打开虚拟机,进入Linux系统登录界面,请以以root用户登入系统. 2.点击虚拟机VM菜单栏--虚拟机--安装VMware Tools,如图A-1所示(作者这里显示的是"重新安装VMware Tools",是因为作者之前已经安

Linux系统上的特殊权限SUID,SGID,STICKY以及额外权限管理工具facl命令

Linux系统上的特殊权限 特殊权限:SUID, SGID, STICKY 安全上下文: 1.进程以某用户的身份运行:进程是发起此进程用户的代理,因此以此用户的身份和权限完成所有操作: 2.权限匹配模型: (1) 判断进程的属主,是否为被访问的文件属主:如果是,则应用属主的权限:否则进入第2步: (2) 判断进程的属主,是否属于被访问的文件属组:如果是,则应用属组的权限:否则进入第3步: (3) 应用other的权限: SUID: 默认情况下:用户发起的进程,进程的属主是其发起者:因此,其以发起

在 Linux 系统上源码安装 GTK+ 2.0

在 Linux 系统上源码安装 GTK+ 2.0==================================================Keywords: GTK+, Install, Linux, SourceAuthor:       whyglinux (whyglinux AT hotmail DOT com)Date:          2007-01-07==================================================目录0. 前言1.

Linux系统 vi/vim文本编辑器

Linux系统 vi/vim文本编辑器 (一)Vim/Vi简介 (二)Vim/Vi工作模式 (三)Vim/Vi基本使用 (四)Vim/Vi应用技巧 (一)Vim/Vi简介 Vim/Vi是一个功能强大的全屏幕文本编辑器,是Linux/UNIX上最常用的文本编辑器,它的作用是建立.编辑.显示文本文件.vim或者vi文本编辑是Linux下最常用的编辑器.vi 和vim 编辑器的区别是vim是vi的改进版本,在vi 编辑器的基础上上扩展了很多实用的功能. 大多数的linux/unix 发行版本中都使用

linux系统上安装paramiko模块

Linux系统上安装paramiko模块要求python要是2.7以上的,所以在安装模块之前应该安装python2.7(这里的安装过程略去) 在安装setuptools的时候突然报错了,RuntimeError:Compression requires the (missing) zlib module原因是因为没有安装zilb和zlib-devel包. yum install zlib yum installzlib-devel 安装完成后,重新编译 python2.7[不需要删除,只需要重新