linux基础学习-第八天

2016-08-08

授课内容:

处理文本的工具sed

vim编辑器

Shell脚本编程基础介绍

sed:sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),

    接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。默认不编辑原文件,仅对模式空间的文件副本进行处理

sed [option] ‘addresscommand‘ file….

-n:静默模式(不输出模式空间内容的自动打印)

-r:支持扩展正则表达式

-i:原文编辑

-e:多点编辑

‘addresscommand‘:

address:

#:第几行

n,m:第n到第m行

n,$:第n行到最后一行

/pattern/:被此处模式所能够匹配到的每一行(正则表达式)

command:

d:删除 

p:打印显示

a \text:在行后面追加文本;支持使用\n实现多行追加

i \text:在行前面追加文本,同样支持使用\n实现多行追加 

s///:查找替换,支持使用其它分隔符,s@@@,s###

替换标记:

g: 行内全局替换

p: 显示替换成功的行

w /PATH/TO/SOMEFILE:将替换成功的行保存至文件中

vim编辑器:

visual edit improved

vim [OPTION]… FILE…

+:打开文件时定位在最尾一行

+#:打开文件时定位在第#行内

+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首

–d file1 file2… 比较多个文件

vim编辑多个文件

vim FILE1 FILE2 FILE3

:next 切换至下一个文件

:prev 切换至前一个文件

:last 切换至最后一个文件

:first 切换至第一个文件

vim的模式:

命令模式(command mode):打开文件时的默认模式

编辑模式(edit mode):输入i,I,a,A,o,O时进入的文本编辑模式

扩展命令模式(extended command mode):输入:时的模式

命令模式–>编辑模式:

I:在当前光标所在的行首输入

i:在当前光标所在处输入

A:在光标所在行的行尾处

a:在光标后面处输入

O:在光标的上一行开始处

o: 在光标的下一行开始处

插入模式—-> 命令模式

ESC

命令模式—-> 扩展模式

:

扩展模式—-> 命令模式

ESC

关闭文件:

扩展命令模式下

:q  没有更改文件时退出

:wq 保存退出

:q! 强制不保存退出

:wq! 强制保存退出

命令模式:

ZZ:保存退出

ZQ:不保存退出

命令模式下的光标跳转:

  字符间跳转:

h: 左l: 右j: 下k: 上

#COMMAND:跳转由#指定的个数的字符;

  单词间跳转:

w:下一个单词的词首

e:当前或下一单词的词尾

b:当前或前一个单词的词首

#COMMAND:由#指定一次跳转的单词数

  当前页跳转:

H:页首M:页中间行L:页底

  行首行尾跳转:

^: 跳转至行首的第一个非空白字符;

0: 跳转至行首

$: 跳转至行尾

  行间移动:

#G、扩展模式:# :跳转至由#指定行

G:最后一行

1G, gg: 第一行

  句间移动:

):下一句(:上一句

段落间移动:

}:下一段{:上一段

命令模式操作

  字符编辑:

x: 删除光标处的字符;

#x: 删除光标处起始的#个字符

xp: 交换光标所在处的字符及其后面字符的位置

~:转换大小写

  删除命令:

d: 删除命令,可结合光标跳转字符,实现范围删除;

dd:删除整行

#dd:shanchu#行 

d$: 删除到行尾

d^:删除到非空行首

d0:删除到行首

  复制命令(y, yank):

y: 复制,行为相似于d命令

yy:复制整行

y$

y0

y^

  粘贴命令(p, paste):

p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面

P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面

扩展模式:查找

/PATTERN:从当前光标所在处向文件尾部查找

?PATTERN:从当前光标所在处向文件首部查找

n:与命令同方向

N:与命令反方向

s: 在扩展模式下完成查找替换操作

格式:s/要查找的内容/替换为的内容/修饰符

地址定界:

#: 具体第#行,例如2表示第2行;

#,#: 从左侧#表示行起始,到右侧#表示行结尾

#,+#: 从左侧#表示的行起始,加上右侧#表示的行数

:2,+3 表示2到5行

.: 当前行

$: 最后一行

.,$-1 当前行到倒数第二行

%:全文, 相当于1,$

命令模式:撤消更改

u撤销最近的更改

. 重复前一个操作

使用多个窗口浏览

  多文件:

vim -o|-O FILE1 FILE2 …

-o: 水平分割

-O: 垂直分割

在窗口间切换:Ctrl+w, Arrow

  单文件:

Ctrl+w,s: split, 水平分割

Ctrl+w,v: vertical, 垂直分割

ctrl+w,q:取消相邻窗口

ctrl+w,o:取消全部窗口

:wqall退出

shell脚本基础:

shell脚本是包含一些命令或声明,并符合一定格式的文本文件

格式要求:首行shebang机制

#!/bin/bash

创建shell脚本的规范:

shell脚本的开头最好写上作者、日期、描述等基本信息,一方面可以方便别人阅读,另一方面也方便自己回顾

#!/bin/bash
#author: 
#Version: 1.0
#Description:This script displays some information about your environment

创建脚本步骤:

第一步:使用文本编辑器来创建文本文件

第一行必须包括shell声明序列:#!

#!/bin/bash

添加注释

注释以#开头

第二步:运行脚本

给予执行权限,在命令行上指定脚本的绝对或相对路径

直接运行解释器,将脚本作为解释器程序的参数运行

#!/bin/bash
#created by:
#date:2016-08-09
#ver:1.0
#DES:test script
echo `date`
echo `cal 08 2016`

[root@Centos7 ~]# sh first.sh 
Tue Aug 9 09:03:38 CST 2016
August 2016 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

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

(0)
麦德良麦德良
上一篇 2016-08-10
下一篇 2016-08-10

相关推荐

  • shell脚本之until循环

    一、用until实现下列脚本 1、每隔3秒钟到系统上获取已经登录的用户的信息;如果发现用户hacker登录,则将登录时间和主机记录于日志/var/log/login.log中,并提示该用户退出系统。 #!/bin/bash #author:jackCui #description:Find out if the sys…

    Linux干货 2016-08-18
  • Bash快捷键

    Ctrl + a :移到命令行首Ctrl + e :移到命令行尾Ctrl + f :按字符前移(右向)Ctrl + b :按字符后移(左向)Alt + f :按单词前移(右向)Alt + b :按单词后移(左向)Ctrl + xx:在命令行首和光标之间移动Ctrl + u :从光标处删除至命令行首Ctrl + k :从光标处删除至命令行尾Ctrl + w :…

    Linux干货 2017-03-26
  • 关于 文本处理工具、正则表达式、grep 的简单举例

                              文本处理工具 抽取文本的工具 文件内容:less和cat 文件截取:head和tail 按列抽取:cut 按关键字抽取:grep 文件查看命令:cat,tac,rev cat […

    系统运维 2016-08-08
  • 基于LNMP网站平台,测试增加memcached缓存系统后网站访问效果

    LNMP安装教程链接:22-love cat 17周博客作业第2部分-构建一个LVS-DR模型的高性能集群 memcached 安装及测试效果 一、概念     memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态…

    Linux干货 2016-08-22
  • corosync+pacemaker对mariadb实现高可用

    corosync+pacemaker对mariadb实现高可用 利用nfs共享存储,导出一个目录作为mariadb的数据目录,然后利用corosync+pacemaker对mariadb进行高可用 1、实验环境 2、实验前的分析 利用nfs导出目录作为mariadb的共享目录,要确保各个mariadb节点对该目录具有写权限,也就是要确保nfs服务器上有一个U…

    Linux干货 2016-11-24
  • 第一周课程练习

    马哥教育网络班22期+第一周课程练习 1、描述计算机的组成及其功能   CPU(运算器和控制器),存储器(内存和外存),输入/输出设备。     (1)运算器:对数据进行加工处理(包括算术运算与逻辑运算);     (2)控制器:负责从存储器取出一条指令,并指出下一条指…

    Linux干货 2016-08-15