对文件数据操作命令

对文件数据操作命令

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

文件查看命令: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

相关推荐

  • bash 循环语句for、while、until

    循环执行 循环执行     定义:将某段代码有次数或无次数循环执行多次。     构成要素:退出条件和进入条件     循环的三种语句:for、while、until for循环:      &nbs…

    Linux干货 2016-08-21
  • Linux学习总结01—操作系统与硬件介绍(原创)

      在计算机中,分为以下结构,运算器,控制器,存储器,输入、输出设备,运算器和控制起的整个就形成了中央处理器(称作为CPU),而cpu的功能就是提供运算,运算的数据都是经由控制器而来,控制器其实是往主存储器中取得数据,内存中的数据是由用户来输入的,其运算的结果通过控制器存储在内存当中,之后可以根据用户的指令输出在一个设备当中(例如显示器),我们都知…

    Linux干货 2016-10-29
  • Docker 实例

    1、Docker 安装 Nginx 方法一:通过 Dockerfile构建 创建Dockerfile 首先,创建目录nginx,用于存放后面的相关东西。 # mkdir -p nginx/www nginx/logs nginx/conf www目录将映射为nginx容器配置的虚拟目录 logs目录将映射为nginx容器的日志目录 conf目录里的配置文件将…

    2018-01-22
  • 正则表达式及文本处理

    正则表达式及文本处理 通俗点说,正则表达式就是处理字符串的方法,更加快速简洁的代表各个要求参数,一般用于描述字符排列和匹配模式的一种语法规则,通过正则表达式一些特殊符号的辅助,让用户轻易的查找、删除、替换一些字符串的处理程序。( ps:正则表达式和通配符不一样,通配符代表的是bash接口的一个功能,但正则表达式是一种字符串处理的表达方式,两者一定要分清楚。)…

    2017-06-11
  • MBR&GPT分区基本原理

    1、磁盘系统为什么要分区?     •     优化I/O性能     •     实现磁盘空间配额限制       &…

    Linux干货 2016-08-30
  • Linux之iptables原理详解

    目录: 一、netfilter与iptables 二、filter、nat、mangle等规则表 三、INPUT、FORWARD等规则链和规则 四、Linux数据包路由原理 五、iptables编写规则  一、netfilter与iptables (1)Netfilter是由Rusty Russell提出的Linux 2.4内核防火墙框架,该框架既…

    2017-08-04