对文件数据操作命令

对文件数据操作命令

  很多时候,我们都会去计算一次数据里头的的相同类型的数据总数或者查看特性的一些信息,在这个时候我们就需要排序与计算之类的命令来辅助,下面就是几个好用的操作文件数据命令。

文件查看命令:cat, tac

1.png

cat [OPTION]… [FILE]…

    对文件数据操作命令-E: 显示行结束符$

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

    -A:显示所有控制符

    -b:非空行编号

    -s:压缩连续的空行成一行 文件查看 5 分页查看文件内容

more: 分页查看文件

    more [OPTIONS…] FILE…

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

tac命令跟cat差不多,就是把cat命令的输出结果反过来。

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

显示文件头/尾几行

head [OPTION]… [FILE]…

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

    -n #: 指定获取前#行

    -#: 指定行数

如:

2.png

对文件数据操作命令

tail [OPTION]… [FILE]…

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

    -n #: 指定获取后#行

    -#:

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

切出文本内容与合并文本

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

在这里如果我们想获得/etc/passwd文件中第一行的用户名所属组shell类型的时候就可以跟前面所学的结合起来

对文件数据操作命令3.png

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

paste [OPTION]… [FILE]…

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

    -s : 所有行合成一行显示 paste f1 f2 paste

    -s f1 f2

收集文本统计数据wc

   如果你想知道一个文件里面有多少字,多少行,多少字符的话,那么就可以使用这个命令来完成。

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

对文件数据操作命令4.png

    使用 -l 来只计数行数

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

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

    使用 -m 来只计数字符总数 11 文本排序sort

排序sort

这个命令可以帮我们排序,而且可以根据不同的数据类型排序。

把整理过的文本显示在STDOUT,不改变原始文件 $ sort [options] file(s)

对文件数据操作命令5.png

常用选项 :

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

    -n 执行按数字大小整理

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

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

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

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

uniq命令

这个命令可以将重复的行删除只保留一个,由于这个命令是将重复的东西减少,所以要配合排序过的文件进行处理

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

uniq [OPTION]… [FILE]…

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

    -d: 仅显示重复过的行

    -u: 仅显示不曾重复的行 连续且完全相同方为重复

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

    sort userlist.txt | uniq -c

比较文件

比较两个文件之间的区别

  diff 命令的输出被保存在一种叫做“补丁”的文件中

使用 -u 选项来输出“统一的(unified)”diff格式文 件,最适用于补丁文件。

  patch 命令复制在其它文件中进行的改变

适用 -b 选项来自动备份改变了的文件

如:

  $ diff -u foo.conf-broken foo.conf-works > foo.patch

  $ patch -b foo.conf-broken foo.patch

Linux上文本处理三剑客

1、grep:文本过滤(模式:pattern)工具; grep, egrep, fgrep(不支持正则表达式搜索)

2、sed:stream editor,文本编辑工具;

3、awk:Linux上的实现gawk,文本报告生成器;

grep

    grep: Global search REgular expression and Print out the line. 作用:文本搜索工具,根据用户指定的“模式”对目标文 本逐行进行匹配检查;打印匹配到的行; 模式:由正则表达式字符及文本字符所编写的过滤条件

对文件数据操作命令6.png

grep [OPTIONS] PATTERN [FILE…]

grep命令选项

    –color=auto: 对匹配到的文本着色显示;

    -v: 显示不能够被pattern匹配到的行;

    -i: 忽略字符大小写

    -n:显示匹配的行号

    -c: 统计匹配的行数

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

    -q: 静默模式,不输出任何信息

    -A #: after, 后#行

    -B #: before, 前#行

    -C #:context, 前后各#行

    -e:实现多个选项间的逻辑or关系 grep –e ‘cat ’ -e ‘dog’ file

    – w:整行匹配整个单词

    – E:使用ERE 19 正则表达式

正则表达式

  正则表达式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易达到查找、删除、替换某特定字符串的处理程序。

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

程序支持:grep, vim, less,nginx等

分两类: 基本正则表达式:BRE 扩展正则表达式:ERE grep -E, egrep

正则表达式引擎: 采用不同算法,检查处理正则表达式的软件模块 PCRE(Perl Compatible Regular Expressions)

元字符分类:字符匹配、匹配次数、位置锚定、分组

man 7 regex 20 基本正则表达式元字符

字符匹配:

    . : 匹配任意单个字符;

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

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

    匹配次数:用在要指定次数的字符后面,用于指定前面的字 符要出现的次数

    *:匹配前面的字符任意次,包括0次 贪婪模式:尽可能长的匹配 .*:任意长度的任意字符

    \?:匹配其前面的字符0或1次

    \+:匹配其前面的字符至少1次

    \{n\}:匹配前面的字符n次

    \{m,n\}:匹配前面的字符至少m次,至多n次

    \{,n\}:匹配前面的字符至多n次

    \{n,\}:匹配前面的字符至少n次

    位置锚定:定位出现的位置

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

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

    ^PATTERN$: 用于模式匹配整行

    ^$: 空行

    ^[[:space:]]*$ :空白行

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

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

    \<PATTERN>:匹配整个单词

分组:

    \(\):将一个或多个字符捆绑在一起,当作一个整体进 行处理,如:\(root\)\+

    分组括号中的模式匹配到的内容会被正则表达式引擎记录 于内部的变量中,这些变量的命名方式为: \1, \2, \3, …

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

    实例:

    \(string1\+\(string2\)*\)

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

    \2: string2

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

正则表达式元字符的定义

    ^ 行首

    $ 行尾

    . 任意单一字符

    [] []内任意单一字符

    [^] 除[]内任意单一字符

    * *前面字符重复不确定次数

    \+ \+前面字符重复一次以上不确定次数

    \? ?前面字符重复0或1次 \ 转义符

    .* 任意长度字符

    \{n\} 前面字符重复n次

    \{n,\} 前面字符重复n次以上

    \{m,n\} 前面字符重复m次和n次之间

    [:alpha:] 所有字母,包括大、小写

    [:alnum:] 所有字母和数字

    [:upper:] 所有大写字母

    [:lower:] 所有小写字母

    [:digit:] 所有数字

    [:punct:] 所有标点符号

    [:space:] 空格和Tab

egrep及扩展的正则表达式

egrep = grep -E

egrep [OPTIONS] PATTERN [FILE…]

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

字符匹配:

     . 任意单个字符

    [] 指定范围的字符

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

次数匹配:

    *:匹配前面字符任意次

    ?: 0或1次

    +:1次或多次

    {m}:匹配m次

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

位置锚定:

    ^ :行首

    $ :行尾

    \<, \b :语首

    \>, \b :语尾

分组:

    ()

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

    或者:

    a|b:a或者b

    C|cat: C 或cat

    (C|c )at:Cat 或cat

原创文章,作者:502795641,如若转载,请注明出处:http://www.178linux.com/30777

(0)
上一篇 2016-08-08 16:11
下一篇 2016-08-08 16:11

相关推荐

  • 划分子网例题

    概念:子网划分就是——>将一个大网络(主机ID位多)划分成多个小的网络(主机ID位少) 如何实现呢?!        实现——->网络ID向主机ID借位,网络ID位变多,主机ID位变少 涉及的公式:         &n…

    2017-09-04
  • 第一周总结(linux系统初识和简单命令)

    一、linux操作系统初识         了解操作系统之前我们需要先了解一下计算机的硬件组成,因为操作系统都是运行在硬件之上。遵循冯诺依曼体系,计算机是由控制器、运算器、存储器、输入设备、输出设备五部分组成。对应到我们现在使用计算机上硬件分别为:        &nb…

    Linux干货 2016-12-26
  • 为什么系统可执行文件多用相对路径创建链接

    为什么系统可执行文件多用相对路径创建链接 使用链接有什么好处 作为一个linux初学者,我们首先要知道,在linux中使用链接的好处是什么。总结下来一共有几个: 使用链接可以使我们在访问文件时省去一大笔敲文件路径的时间。对于我们运维工程师来说,我们经常要查看某个文件或者访问某个目录,再进行该项工作时,往往需要敲很多路径才能找到我们想访问的文件,创建链接可以让…

    Linux干货 2017-07-23
  • Linux LVM

    Linux LVM 前言     LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,目前最新版本为:稳定版1.0.5,开发版 1.1.0-rc2,以及LVM2开发版。无论在Linux或者其他类似…

    系统运维 2016-04-24
  • bash特性及配置文件

    bash配置文件     两类:         profile:为交互式登录shell提供配置         bashrc:为非交互式登录shell提供配置…

    Linux干货 2016-08-31
  • linux用户与组管理

    一、linux用户与组管理的基本介绍 1、任何一个用户想要使用Linux系统都要向管理员申请一个账号,对这些账号的管理即是对用户的管理,所谓组,就是多个账号的集合。用户和组管理可以提高用户的管理效率、工作效率以及系统的安全性,比如将同一个部门的成员放在一个组里并设置权限,这样可有效的对资源共享,同时可以避免其他部门的人恶意破坏。 2、用户和组的管理内容一般有…

    Linux干货 2016-08-02