sed

前言:前面学到了文本处理三剑客之一grep,但是grep在有些时候显得力不从心,我们需要一款针对行操作的处理工具,没错,这就是sed流编辑器。

sed用法提炼:

sed 's/(text1)(text2)(text3)/\1\2\3/'

vim

前言:强大的Linux如果没有一款疯狂的编辑器,常用的编辑操作会不会力不从心?今天本文介绍的就是上古神器vim的各种操作,尽管 Vim 已经是古董级的软件,但还是有无数新人迎着困难去学习使用,可见其经典与受欢迎程度。另外,由于 Vim 的可配置性非常强,各种插件、语法高亮配色方案等多不胜数,无论作为代码编辑器或是文稿撰写工具都非常给力……

vim之此处文档dilimiter

vim编辑器需要用户传递各种编辑参数和编辑内容,使用输入重定向将参数传递给vim编辑器,结合特定组合键,就能完成编辑操作。有如下脚本

#!/bin/bash

vim /tmp/text <

i                               #进入插入模式

The first line                  #编辑文本

The second line

^[                              #特殊组合键,Ctrl+v-->ESC 回到命令行模式

ZZ                              #保存文件且退出

EOF

----------------------------------

Vim: 警告: 输入不是来自终端(键盘)

The first line

The second line

"/tmp/text" [新] 4L, 33C 已写入

[root@ _209_ ~]#

虽然实现了把数据写入文件,但还是不推荐这种写法,不过需要接受参数的命令,可以借鉴类似的做法。

vim小试牛刀

1、如何设置tab缩进为4个字符

:set tabstop=4

2、复制/etc/rc.d/init.d/functions文件至/tmp目录;替换/tmp/functions文件中的/etc/sysconfig/init为/var/log

[root@ _2_ ~]# cp /etc/rc.d/init.d/functions /tmp

[root@ _3_ ~]# vim /tmp/functions

:%s@/etc/sysconfig/init@/var/log@g

3 次替换,共 3 行

...

if [ -f /var/log ]; then

. /var/log

else

# This all seem confusing? Look in /var/log,

...

3、删除/tmp/functions文件中所有以#开头,且#后面至少有一个空白字符的行的行首的#号

~]# vim /tmp/function

:%s@^#\([[:space:]]\+.*\)@\1@g

A sed expression to filter out the files that is_ignored_file recog

nizes

__sed_discard_ignored_files='/\(~\|\.bak\|\.orig\|\.rpmnew\|\.rpmori

g\|\.rpmsave\)$/d'

if [ "$_use_systemctl" = "1" ]; then

4、复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符

[root@ _4_ ~]# cp /etc/profile /tmp/

[root@ _5_ ~]# vim /tmp/profile

:%s/^[[:space:]]\+//g

if [ "${-#*i}" != "$-" ]; then

. "$i"

else

. "$i" >/dev/null

fi

fi

done

unset i

unset -f pathmunge

33 次替换,共 33 行

5、复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首添加一个#号

[root@ _7_ ~]# cp /etc/init.d/functions /tmp/functions

[root@ _8_ ~]# vim /tmp/functions

:%s/^[[:space:]].*/#&/

#                "x$1" = xforce-reload -o \

#                "x$1" = xcondrestart ] ; then

#               systemctl_redirect $0 $1

#               exit $?

#       fi

fi

443 次替换,共 443 行

sed大展身手

6、删除/etc/grub2.conf文件中所有以空白开头的行行首的空白字符

[root@ _11_ ~]# sed -r 's/^[[:space:]]+(.*)/\1/' /etc/grub2.cfg

7、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符

删除前:

[root@ _8_ ~]# cat /etc/fstab

#

# /etc/fstab

# Created by anaconda on Tue Jul 19 22:27:09 2016

删除后:

[root@ _7_ ~]# sed -r 's/^#[[:space:]]+(.*)/\1/' /etc/fstab

#

/etc/fstab

Created by anaconda on Tue Jul 19 22:27:09 2016

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

8、在/root/install.log每一行行首增加#号

[root@ _12_ ~]# sed 's/.*/#&/' initial-setup-ks.cfg

##version=DEVEL

## X Window System configuration information

#xconfig  --startxonboot

## License agreement

#eula --agreed

## System authorization information

9、在/etc/fstab文件中不以#开头的行的行首增加#号

[root@ _13_ ~]# sed -e 's/^[^#].*$/#&/' -e 's/^$/#&/' /etc/fstab

#

#

# /etc/fstab

# Created by anaconda on Tue Jul 19 22:27:09 2016

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

#UUID=a7717433-0d0f-4126-8eff-2e41361cea79 /

10、处理/etc/fstab路径,使用sed命令取出其目录名和基名

取目录名:

echo "/etc/fstab" |sed -r 's#[^/]+/?$##g'|sed -r's#(.+)/#\1#'

/etc

取基名:

[root@ _55_ ~]# echo "/etc/fstab/" |sed -r 's#/#\n#g'|sed -rn -e "/^[^[:space:]]/p"|sed  -n '$p'

fstab

一起取:

[root@ _160_ ~]# echo "/etc/fstab" |sed -r "s#(.*/)([^/]+/?$)#\1#"

\2

11、利用sed 取出ifconfig命令中本机的IPv4地址

[root@ _164_ ~]# ifconfig|sed -n '2p' |sed -r 's/.*inet (.*) netmask.*/\1/'

192.168.33.200

12、统计centos安装光盘中Package目录下的所有rpm文件的以.分隔倒数第二个字段的重复次数

[root@ _187_ ~]# ls /mnt/Packages/ |sed -n '/.rpm$/p'|sed -r 's/.*\.([^\.]+)\.rpm$/\1/'|sort|uniq -c

2000 i686

2938 noarch

4069 x86_64

原创文章,作者:M20-1--孔祥文,如若转载,请注明出处:http://www.178linux.com/32452

linux vim 倒数200行,上古神器之vim相关推荐

  1. 上古神器之Vim编辑器

    在Linux操作环境下进行文本的编辑少不了编辑器vi ,vim,nona... 一. 修改颜色方案 有时候,使用vim打开一个文件,竟然是蓝色的,辨识度相当的差,这个时候,我们可以调整 一下颜色的搭配 ...

  2. vim删除奇数行_如何用vim删除特定的偶数行?

    来个简单点的(概念简单,都是基本操作),不过执行速度比较慢,适合不太大的文件 Step 1: 打开行号 set nu Step 2: 移动到文件末尾 G Step 3: 如果最后一行就是偶数行,新增一 ...

  3. vim剪切指定行_10 分钟上手 Vim,常用命令大盘点

    传闻有 180 万的程序员不知道如何退出 Vim 编辑器,真的有这么困难吗?下面给大家整理了一份 Vim 常用命令,让你 10 分钟快速上手 Vim,溜得飞起!以下命令请在普通模式执行1.移动光标 j ...

  4. linux 神的编辑器,编辑器之神-vim的使用,编辑器神-vim

    编辑器之神-vim的使用,编辑器神-vim vim即vi的升级版:在linux中,vi是vim的软链接,我们敲vi和vim出来的都是vim: 纯手打,如有错误,敬请指出. vi的三种模式及简单使用 v ...

  5. linux终端vim底行模式点冒号,Vim基本使用方法

    为什么要学习Vim,Vim和Vi的区别,Vim的基本使用方法(部分) 为什么很多大型网站都采用Linux作为服务器? 1. 为什么要学习Vim,是为了装B吗? 在Windows操作系统横行的今天,为什 ...

  6. Linux系列开坑记(二)-神的编辑器Vim

    今天是Linux系列命令第二篇,今天我们来简单聊聊Vim这个号称是「编辑器之神」的编辑器---Vim 是Vi Imporved,vi来源visual单词,目的是在做可移动光标的视频编辑文本. 写这篇文 ...

  7. linux vim编译命令行,LINUX VIM编译器常用命令总结

    9.vim编辑器 Vi编辑器的增强版,支持多语言脚本,文件类型插件,各文本补全模式,以及许多其它选项. 命令模式:用于文件导航,剪切粘贴既简单命令.撤销恢复和其他操作,也在此模式进行 插入模式:用于常 ...

  8. pyquery获取不到网页完整源代码_爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网...

    爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网 前言 上篇文章 PyQuery (一) 回顾.今天来介绍具体 PyQuery 的使用方法. 穷游网目标与分析 开始之前,按照之前的套路一步 ...

  9. 在Vim中将DOS行尾转换为Linux行尾

    如果打开在Windows中创建的文件,则所有行均以^M结尾. 如何一次删除所有这些字符? #1楼 tr -d '\15\32' < winfile.txt > unixfile.txt ( ...

最新文章

  1. 史上最大中文知识图谱,规模达1.4亿,现在开源可下载,还有配套聊天机器人API...
  2. 替换ubuntu 源
  3. 这是“我”的故事 —— 董彬
  4. Gmail的另类浏览法--RSS
  5. Pytorch 手工复现交叉熵损失(Cross Entropy Loss)
  6. 给BERT加一个loss就能稳定提升?斯坦福+Facebook最新力作!
  7. UnicodeMath编码教程
  8. P3211 [HNOI2011]XOR和路径
  9. iocp端口断开_关于iocp检测客户端异常断线
  10. iptables实现防火墙及NAT的基本功能----视频下载
  11. html表格自动变色,让考勤表实现自动变色
  12. windows NET命令的使用
  13. AIX系统中 .toc文件是做什么用的
  14. div 背景色设置_DIV背景颜色设置
  15. Android UserManager.isUserAGoat() 的正确用例?
  16. Qt中Qchart插件实现PMW3901迷你光流模块上位机(串口通信)
  17. iOS 获取照相机实时预览图片
  18. 干货分享|串流游戏软件大比拼
  19. 我的世界JAVA挂机杀怪有经验_我的世界如何快速获得经验?
  20. openCV+python实现倾斜校正

热门文章

  1. html页面展示大括号,vue 防止页面加载时看到花括号的解决操作
  2. 智慧党建云平台小程序 v2.4.9+前端(公众号+小程序一体)开源版源码下载安装教程
  3. JUC - 多线程之悲观锁、乐观锁,读写锁(共享锁、独享锁),公平非公平锁,可重入锁,自旋锁,死锁(十)
  4. 滞回比较器的设计原理
  5. vscode编写前端页面像素大小不一致
  6. 如何提高抵御风险的能力?
  7. 【附C++源代码】模型预测控制(MPC)公式推导以及算法实现,Model Predictive control介绍
  8. 现代化的中国教育,缺失的不是钱,是思想(之二)--教师不再是舞台的主角
  9. Trace.html 抓取
  10. conda中IPython无法显示图片