一、sed

sed 文本处理工具 流编辑器 行编辑器
保留空间
模式空间
sed不会影响原文件的内容,它处理的是它载入模式空间的内容

sed [options].."AddressCommand" FILENAME
sed -n 1,3p /etc/passwd

Address:

 . # :文件中的第#行(数字所代表的那一行)
$ :最后一行
. #,# :从第#行到第#行的连续范围,如:,5就标识从第二行到第五行
. /pattern/:被正则表达式匹配的行
./pattern1/,/pattern2/:从被pattern1匹配的行开始到被pattern2匹配的行结束
.#,+N : 从某一行开始向后再选择N行 如:,+

options:

    -n : 只处理被模式匹配到的行,并不能使用默认的P命令
-r :支持扩展的正则表达式
-i :替代,会改变原文件的内容
-e :可以写多个表达式。如:-e 表达式1 -e 表达式2 如: sed -e '2d' -e '4d' test
-f : 脚本名称 :将脚本文件中包含的命令全部执行

command:

 p:显示,默认的命令
d:删除
a \string:追加string内容(匹配行后面)
i \string:在匹配行前面添加内容
r FILENAME:读取一个文件,将文件内容加载到匹配行后面
w:将匹配的内容另存为某个文件
s/pattern/string/修饰符:将模式匹配的内容替换为string,根据修饰符来替换 sed @@@ sed ###
默认只换一行
修饰符: g 所有 如: sed 's@\@#@g' fstab 如: sed 's/l\(..e\)/L\1/g'

sed -n ,3p /etc/passwd
root:x:::root:/root:/bin/bash
bin:x:::bin:/bin:/sbin/nologin
daemon:x:::daemon:/sbin:/sbin/nologin
ed练习:
)删除/etc/grub.conf文件中行首的空白符;
sed -r 's/^[[:space:]]+//g' /etc/grub.conf
)替换/etc/inittab文件中"id:3:initdefault:"一行中的数字为5;
sed -r 's/id:[0-9]:initdefault/id:5:initdefault/g' /etc/inittab
)删除/etc/bashrc文件中的空白行;
sed -r '/^$/d' /etc/bashrc
)删除/etc/inittab文件中开头的#号;
sed -r 's/^#//g' /etc/inittab
)删除某文件中开头的#号及后面的空白字符,但要求#号后面必须有空白字符;
vim test.txt
cat test.txt
#abc
# hello world
# hi world sed -r 's/^#[[:space:]]+//g' ./exercise.txt
)删除某文件中以空白字符后面跟#类的行中的开头的空白字符及#;
sed -r 's/^[[:space:]]+#+//g' test.txt )取出一个文件路径的目录名称;
#!/bin/bash
if [ $# -ne ];then
echo "usage:test7.sh FILEPATH"
fi
echo $ | sed -r 's@(/.*)*/.*@\1@g' )取出一个文件路径的基名。
#!/bin/bash
if [ $# -ne ];then
echo "usage:test7.sh FILEPATH"
fi
echo $ | sed -r 's@/.**/(.*)@\1@g'

补充:

basename $0 查看文件本身

二、vim编辑器

文本编辑工具 vi nano emacs
vi(visual interface)
vim (VI improved)
两个程序,推荐用vim,有语法高亮
which vi vim
/bin/vi
/usr/bin/vim

全屏编辑器,模式化编辑器

vim模式:
编辑模式(命令模式)
输入模式
末行模式

1、模式转换

编辑-->输入:
i: 在当前光标所在字符的前面,转为输入模式;
a: 在当前光标所在字符的后面,转为输入模式;
o: 在当前光标所在行的下方,新建一行,并转为输入模式; I:在当前光标所在行的行首,转换为输入模式
A:在当前光标所在行的行尾,转换为输入模式
O:在当前光标所在行的上方,新建一行,并转为输入模式; 输入-->编辑:
ESC 编辑-->末行:
:/ ? 末行-->编辑:
ESC, ESC Enter BackSpace

2、打开文件

# vim /path/to/somefile
vim +# :打开文件,并定位于第#行
vim +:打开文件,定位至最后一行
vim +/PATTERN : 打开文件,定位至第一次被PATTERN匹配到的行的行首 默认处于编辑模式

3、关闭文件

、末行模式关闭文件
:q 退出
:wq 保存并退出
:q! 不保存并退出
:w 保存
:w! 强行保存
:wq --> :x
、编辑模式下退出
ZZ: 保存并退出
ZQ: 不保存退出

4、移动光标(编辑模式)

、逐字符移动:

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

   #h: 移动#个字符;

、以单词为单位移动
w: 移至下一个单词的词首
e: 跳至当前或下一个单词的词尾
b: 跳至当前或前一个单词的词首 #w: 、行内跳转:
: 绝对行首
^: 行首的第一个非空白字符
$: 绝对行尾 、行间跳转
#G:跳转至第#行;
G:最后一行
gg:第一行第一个字符位置 末行模式下,直接给出行号即可
:# :跳转至第#行
:$ :最后一行

5、翻屏

Ctrl+f: 向下翻一屏
Ctrl+b: 向上翻一屏 Ctrl+d: 向下翻半屏
Ctrl+u: 向上翻半屏

6、删除单个字符

x: 删除光标所在处的单个字符
X: 删除光标所在处前面的单个字
#x: 删除光标所在处及向后的共#个字符

7、删除命令: d

d命令跟跳转命令组合使用;
#dw, #de, #db, d0, d^, d$, dG, dgg, d#G

dd: 删除当前光标所在行
#dd: 删除包括当前光标所在行在内的#行;

末行模式下:
StartADD,EndADDd
.: 表示当前行
$: 最后一行
+#: 向下的#行

8、粘贴命令 p

p: 如果删除或复制为整行内容,则粘贴至光标所在行的下方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的后面;
P: 如果删除或复制为整行内容,则粘贴至光标所在行的上方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的前面;

9、复制命令 y

用法同d命令

10、修改:先删除内容,再转换为输入模式

    c: 用法同d命令
C: = c$

11、替换:r

R: 替换模式

12、撤消编辑操作 u

u:撤消前一次的编辑操作
连续u命令可撤消此前的n次编辑操作
#u: 直接撤消最近#次编辑操作
撤消最近一次撤消操作:Ctrl+r

13、重复前一次编辑操作

.

14、可视化模式

v: 按字符选取
V:按矩形选取

15、查找

/PATTERN 从上往下
?PATTERN 从下往上
n 顺序查找
N 倒序查找

16、查找并替换

在末行模式下使用s命令
ADDR1,ADDR2s@PATTERN@string@gi (i 忽略大小写)
,$ 第一行到最后一行
%:表示全文

17、使用vim编辑多个文件

vim FILE1 FILE2 FILE3
:next 切换至下一个文件
:prev 切换至前一个文件
:last 切换至最后一个文件
:first 切换至第一个文件
:qa 全部退出

18、分屏显示一个文件

Ctrl+w, s: 水平拆分窗口
Ctrl+w, v: 垂直拆分窗口 在窗口间切换光标:
Ctrl+w, 上下左右 :qa 关闭所有窗口

19、将当前文件中部分内容另存为另外一个文件

末行模式下使用w命令
:w
:ADDR1,ADDR2w /path/to/somewhere

20、将另外一个文件的内容填充在当前文件中

:r /path/to/somefile

21、跟shell交互

:! COMMAND

22、高级功能

、显示或取消显示行号
:set number
:set nu :set nonu 、显示忽略或区分字符大小写
:set ignorecase
:set ic :set noic 、设定自动缩进
:set autoindent
:set ai
:set noai 、查找到的文本高亮显示或取消
:set hlsearch
:set nohlsearch 、语法高亮
:syntax on
:syntax off

23、配置文件

/etc/vimrc 重启vim即生效
~/.viminfo 学习导师 vimtutor

 

【linux之sed及vim】的更多相关文章

  1. Linux文本编译工具VIM详解

    Linux文本编译工具VIM详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.VIM概述 1>.vim简介 >.vi: 全称Visual editor,即文本编辑 ...

  2. linux中sed命令(全面解析)

    目录 一:linux中sed命令介绍 1.sed作用 2.sed命令格式 3.参数 4.sed的编辑模式 5.sed参数解析用法 二:sed 参数 -f 案例实战解析 1.前介 2.引入简介 3.方法 ...

  3. linux学习心得之vim/Cvim篇

    linux学习心得之vim/Cvim篇 在linux 下,vim 时一种最常见的编辑器,很多linux的发行版就自带了.我的是CentOS 6.3. 基本上Vim共分为3种模式,分别是一般模式,编辑模 ...

  4. Linux中sed的用法实践

    Linux中sed的用法实践 参考资料:https://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html http://www.fn139 ...

  5. Linux中Sed的用法

    Linux中Sed的用法 sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为: ...

  6. Linux系统配置VI或VIM的技巧

    Linux系统配置VI或VIM的技巧作者:IT专家网论坛出处:IT专家网论坛2008-10-28 11:08配置VI和VIM的颜色显示,使它能够高亮度显示一些特别的单词,这对编写程序很有用⋯⋯ 1.V ...

  7. Linux命令之vi/vim(一)

    vi仅仅是一个文本编辑器,可以给字符着色,可以自动补全,但不具备windows下word的排版功能.Vim是Vi improved的缩写,是vi的改进版. vi和vim的区别: 多级撤销.在vi中按u ...

  8. Linux系统里让vim支持markdown格式的语法高亮

    Markdown是深受程序员喜爱的一个文件格式. 然而Linux里默认的vim设置,并不支持markdown格式的语法高亮显示. 下面就来介绍如何设置使得markdown格式的文件在vim里也能享有语 ...

  9. 【转载】linux之sed用法

    linux之sed用法 原文地址:http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html   sed是一个很好的文件处理工具 ...

随机推荐

  1. The Beginning of the Graph Theory

    The Beginning of the Graph Theory 是的,这不是一道题.最近数论刷的实在是太多了,我要开始我的图论与树的假期生活了. 祝愿我吧??!ShuraK...... poj18 ...

  2. poj3358 Period of an Infinite Binary Expansion

    Period of an Infinite Binary Expansion 题目大意:给你一个分数,求这个分数二进制表示下从第几位开始循环,并求出最小循环节长度. 注释:int范围内. 想法:这题说 ...

  3. Win调整和小技巧

    推荐win下一些个人爱用的工具软件(以及使用心得)和一些系统调整方法,让win下不尽人意的设置发生小小变化,让整天摸着电脑的ITer们的生活更有乐趣. 本人酷爱收集一些好用的软件,若各位也对某个或某些 ...

  4. Java并发编程实战(chapter_2)(对象发布、不变性、设计线程安全类)

    一.发布与溢出 "发布(Publish)"一个对象的意思是指,使对象能够在当前作用于之外的代码中使用.这个"之外",尤为关键,各种出问题的地方,都是因为这个&q ...

  5. C语言--第七周作业

    一.求交错序列前N项和 1.代码 #include <stdio.h> int main() { int i=1,N; double j=0,sum=0; scanf("%d&q ...

  6. css3动画transition详解2

    transition主要包含四个属性值:执行变换的属性:transition-property,变换延续的时间:transition-duration,在延续时间段,变换的速率变化transition ...

  7. HttpClient 上传多个文件

    using (System.Net.Http.HttpClient client = new System.Net.Http.HttpClient()) { client.BaseAddress = ...

  8. 第1章 什么是TCP-IP

    第1章 什么是TCP-IP 什么是网络 网络是计算机或类似计算机的设备之间通过常用传输介质进行通信的集合.通常情况下,传输介质是绝缘的金属导线, 它用来在计算机之间携带电脉冲,介质也可以是电话线,甚至 ...

  9. [phpvia/via] PHP多进程服务器模型中的惊群

    [ 概述 ] 典型的多进程服务器模型是这样的,主进程绑定ip,监听port,fork几个子进程,子进程安装信号处理器,随后轮询资源描述符检查是否可读可写: 子进程的轮询又涉及到 IO复用,accept ...

  10. java中类的三大特征之多态

    Java 多态 同一种事物由于条件不同,展示出不同的结果,叫做多态. 父类的引用类型,由于使用不同的子类对象实例,而执行不同的操作. 多态存在的三个必要条件 1. 子类继承父类: 2. 子类重写父类方 ...