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 13:58
下一篇 2016-08-10 13:59

相关推荐

  • http协议

    ##socket套接字– 套接字,进程间通信IPC的一种实现,允许位于不同主机(或同一主机)上不同进程之间进行通信和数据交换。– socketAPI:封装了内核中所提供的socket通信相关的系统调用– socketDomain:根据其所使用的地址– AF_INET:Address Family,Ipv4&#8…

    Linux干货 2017-12-06
  • 优云软件数据专家最佳实践:数据挖掘与运维分析

    这份研究报告,作者是优云软件数据专家陈是维,在耗时1年时间制作的一份最佳实践,今天和大家分享下,关于《数据采矿和运维分析》,共同探讨~ 数据挖掘(Data Mining)是从大量数据中提取或“挖掘”知识。 广义数据挖掘:数据挖掘是从存放在数据库、数据仓库或其它信息库中的大量数据挖掘有趣知识的过程。 数据挖掘技术侧重:1)概率与数理统计 2)数据库技术 3)人…

    大数据运维 2016-07-16
  • Linux系统下的翻译神器——Goldendict

    Linux系统下的翻译神器——Goldendict 学习Linux时明显感受到学习英文的重要性。绝大多数Linux的发行版英文版的功能要远强于中文。因此一款好的翻译软件是了解熟悉Linux系统的必需品。在Windows系统下有各种好用的词典程序,包括有道词典、bing词典、金山词霸等等,而这些软件都不能在linux下使用,即使能够使用也只是测试版,功能太少。…

    Linux干货 2017-04-24
  • N25_第五周

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;grep -E "^[[:space:]]+" /boot/grub2/grub.cfg 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;grep -E "^#[[:space:]…

    Linux干货 2017-01-08
  • N25-第13周博客作业

    1、建立samba共享,共享目录为/data,要求:(描述完整的过程)   1)共享名为shared,工作组为magedu;   2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名; &n…

    Linux干货 2017-05-21
  • Linux中的用户、组和权限的管理

    一、Linux的安全模型     在Linux中用户登陆时必须提供用户名和密码(用户是由root用户创建的,最初的密码也是root用户设定的)。系统使用用户和群组来控制使用者访问文件和其他资源的权限。每一个文件都一定属于一个用户(一般该用户就是文件的创造者)并与一个群组相关。每一个进程(处理程序)都会与一个用户和群组关…

    Linux干货 2016-08-07