vi/vim/sed常用命令

发布时间 2023-07-14 11:07:20作者: 我的天啊~

1、vi a.txt 进去文件,在没有进入编辑模式(i)下 操作如下:

编辑:

  • 复制当前行:  yy
  • 粘贴:p
  • 删除当前行:dd
  • 清空文件: :%d
  • 回退: u
  • 撤销回退:ctrl+r

 

光标移动:  

  • 光标到页首: H
  • 光标到页尾: L
  • 光标到中部:M
  • 显示行号:  :set nu
  • 取消显示行号: :set nonu
  • 跳转到指定行(例如第5行):  :5  
  • 翻上一页: ctrl+b
  • 翻下一页: ctrl+f

查找:

  • 查找字符串(例如aaa): /aaa
  • 查找下一个(查找操作回车后输入): n
  • 查找上一个(查找操作回车后输入): N

替换( / 可以用 # 代替):

  • 全文替换(将apple/orange/mango 替换尾fruit): :%s/apple\|orange\|mango/fruit/g
  • 当前行全替换(将foo替换尾bar): :s/foo/bar/g
  • 当前行替换首次出现:  :s/foo/bar/
  • 不区分大小写替换(i标志):  :s/foo/bar/i
  • 指定行替换(3~5行)所有出现:  :3,10s/foo/bar/g
  • 相对行替换(当前行~接下来4行): :.,+4s/foo/bar/g
  • 当前行到结尾替换: :.,$s/foo/bar/g

 

2、sed 命令

打印:

  • 输出指定行(打印第二行):  sed -n  '2p'   a.txt    
  • 输出非行(除了2到4行的全部内容): sed  '2,4d' a.txt
  • 替换输出(替换第 3 行中 89 替换成 99 数据) :  sed '3s/89/99/g' a.txt

替换文件本身:

  • 不会打印(替换第 3 行中 89 替换成 99 数据): sed -i '3s/89/99/g' a.txt