一、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. 关于js中promise的面试题。

    核心点promise在生命周期内有三种状态,分别是pending,fulfilled或rejected,状体改变只能是 pending-fulfilled,或者pending-rejected.而且状 ...

  2. linux小白成长之路2————yum安装火狐浏览器

    1.使用终端: CentOS左上角:应用程序>收藏>终端  2.使用root权限安装软件: 输入:sudo -i 输入密码(上篇安装linux虚拟机时设定的登录密码,也是超级管理员密码) ...

  3. Java注解(2)-注解处理器(运行时|RetentionPolicy.RUNTIME)

    如果没有用来读取注解的工具,那注解将基本没有任何作用,它也不会比注释更有用.读取注解的工具叫作注解处理器.Java提供了两种方式来处理注解:第一种是利用运行时反射机制:另一种是使用Java提供的API ...

  4. 微信公众号支付JSAPI网页,total_fee错误不正确,header重定向参数丢失,无法获取订单号和金额解决

    微信公众号支付官方demo错误, 公众号支付只能用在微信里,也就是微信内部浏览器. 1.到WxPayHubHelper.php文件 JsApi_pub()类下createOauthUrlForCode ...

  5. 攻防组网之—-MikroTik软路由的配置和FUZZ

    作者:红发香克斯 开篇之前一直想借助一台高性能PC利用VMWare组建一个攻防网络,之前有一贴写过找到了一个软路由系统,就是可以在VMWare中使用的路由器操作系统,那个系统还挺常用,上次帖子写到了安 ...

  6. ibatis.net 入门demo 实现基本增删改查

    1.项目架构体系  DAO(数据访问层)   Domain(实体层)  Text(表示层) 2.比较重要的是需要添加两个dll的引用,以及两个配置文件和一个XML文件 两个 IbatisNet.Com ...

  7. [BZOJ 3813]奇数国

    3813: 奇数国 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 736  Solved: 416[Submit][Status][Discuss] ...

  8. web服务器学习2---httpd-2.4.29虚拟目录及访问控制

    一 创建虚拟目录 环境准备: 系统:CentOS 7.4 软件:httpd-2.4.29 1.编辑主配置文件,添加命令运行子配置文件 vi /usr/local/httpd/conf/httpd.co ...

  9. 如何从RxJava升级到RxJava2

    如何从RxJava升级到RxJava2. RxJava2已经推出有一年半的时间,由于之前RxJava已经在现有项目中广泛使用,而RxJava2在除了很多命名外并没有太多革新,所以相信有很多人跟我一样都 ...

  10. java程序在没有java环境的电脑上执行的方法(关键词jar,exe)

    可以让你写的java程序在别人没有任何java配置以及环境的情况下执行 写好程序 在程序对应的package上右键->export->java->Runnable JAR file- ...