一、背景

在对CTI服务器上的phone_roa_seg.ini文件的号段信息进行更新时。之前都是直接在VI里进行编缉添加的,不过后来发现里面有一些重复的和错误的数据。所以决定从数据库提了下最新的号段的信息对该文件进行更改。于是先用pl/sql 查出结果后,导出为excel里,再由excel中复制到UE中,最后粘到linux文件里。不过更新完后两天,就收到客户大量的投诉信息。提示业务在使用中对固化(不加区号)进行拨打时会转到杭州的号段上。也就是说系统自动给固化呼叫加上了0571的区号。于是就想到了修改的文件上。后来通过使用文件比对发现两个文件不一样。乍一看和改之前的文件并没有什么区别。

后来在十六进制下比对发现:空格符为十六进制下的20,而excle中的制表空格符为19。找到了问题,重新更改,业务进程重新加载后,问题解决。

phone_roa_seg.ini文件格式如下:

  1. 1342900 0579
  2. 1342901 0579
  3. 1342902 0579
  4. 1342910 0571
  5. 1342911 0571
  6. 1342915 0571
  7. 1342916 0571
  8. 1342917 0571

二、解决方法

PL/sql导出结果为TSV文件,然后UE编缉,点选“将制表符更换为空格”,OK,完成收工。

后来又想了下,在linux vi下应该也能实现修改。vi删除多余空格:

  1. 行末:$
  2. 行首:^
  3. 空格:\s
  4. 行末空格:\s+$
  5. 行首空格:^+\s

有些人认为行末的空格是无用,浪费而难看的。要删除这些每行后面多余的空格,可以执行如下命令:

  1. :%s/\s+$//g

命令前面指明范围是 "%",所以这会作用于整个文件。"substitute" 命令的匹配模式是"\s+$"。这表示行末($)前的一个或者多个(+)空格(s)。后面我们会介绍怎样写这样的模式。替换命令的 "to" 部分是空的:"//"。这样就会删除那些匹配的空白字符。另一种没有用的空格是 Tab 前面的字符。通常这可以删除而不影响格式。但并不是总这样!所以,你最好手工删除它。执行如下命令:

/

你什么都看不见,其实这是一个空格加一个 TAB 键。相当于 "/<Space><Tab>"。现在,你可以用 "x" 删除多余的空格,并保证格式没有改变。接着你可以用 "n" 找到下一个位置并重复这个操作。命令小结:

:set fileformat 设置文件格式
:set endofline 设置文件结束符
:set noendofline 取消文件结束符
:set list 进入List Mode
:set nolist 退出List Mode
:%s/n//g 删除换行符
:set textwidth 设置行宽
:set textwidth 设置行边距
:join 合并多行
J 合并两行

此外,关于ASCII字符,Linux下面有个简要的介绍:man ascii

^M 是ascii中的'r'回车符,是16进制的0x0D,8进制的015,十进制的13;

对于换行这个动作,unix下一般只有一个0x0A表示换行
windows下一般都是0x0D和0x0A两个字符。
^L 是ascii 0x0C 'f', 换页控制符 。

三、如何消除vi中的^M

我刚开始去用sed命令:

  1. sed 's/^M//g' file_old > file_new

执行后查看不成功,输出的文件,用vi打开,还是带^M。
后来到网上搜到了可以用的办法,用tr命令:

  1. tr -d "15" < myfile.txt > myfile_new.txt

可以把符号^M(即"15")去掉,并另存为新文件myfile_new.txt 。

四、vim显示空格、tab字符及多行注释 

1、显示 TAB 键

文件中有 TAB 键的时候,你是看不见的。要把它显示出来:

  1. :set list TAB

显示为 ^I,$显示在每行的结尾,表示换行,Vim 可以用高亮显示空格和TAB。

2、vim 的搜索及替换

如果没有指定范围,则只在当前行进行搜索替换。
在所有行进行搜索替换。范围符号%表示在所有行进行搜索替换。

  1. :%s/from/to/

就是在全文查找from并替换为to。
在指定的行上进行搜索替换。

  1. :1,50s/from/to/

表示在第1行和第50行之间(包括1和50行)进行搜索和替换。

  1. :45s/from/to/

表示仅仅在第45行进行搜索和替换。而"1,$"行号范围和“%“是等价的。

3、Vim多行缩进技巧

关键字: vim indent
按v进入visual状态,选择多行,用>或<缩进或缩出
通常根据语言特征使用自动缩进排版:

在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行。你可以试试把代码缩进任意打乱再用n==排版,相当于一般IDE里的code format。

使用gg=G可对整篇代码进行排版。

vim 多行注释

  1. :20,30 s/^/#/g 第20到30行用 # 注释掉。
  2. :20,30 s/^#//g 取消注释
  3. :4,10 s/^[^I ]+// 去掉行首的空白字符 用 . 表示当前行。
  4. :.,30 s/^/#/g 可以看到 vim 命令针对当前行,在前面加个范围就可以针对多行。
  5. :co 12 把当前行 copy 到行 12 的地方。

总结:以后在使用UE编缉此类文件时,自动点选上“显示空格和制表符”及“显示行结尾”。

转载:http://www.361way.com/vi-char/362.html

vi/vim查看空格、制表符等特殊符号相关推荐

  1. VIM查看空格,换行,TAB键

    " 启用List模式,用CTRL-I显示制表符,用$显示行结束符 set list "这样会出现大量的^I和$不方便查看,更改下符号,TAB会被显示成 ">-&qu ...

  2. LINUX查看文件内容命令cat vi/vim more tail head的区别

    缘起 用过linux的同学应该都知道,在linux中查看文件内容有好几个命令都可以实现,包括但不限于以下这些 cat vi more tail head 那么这些命令都有什么区别呢?又分别在什么时候用 ...

  3. 解决vi/vim中粘贴会在行首多很多缩进和空格的问题

    解决vi/vim中粘贴会在行首多很多缩进和空格的问题 参考文章: (1)解决vi/vim中粘贴会在行首多很多缩进和空格的问题 (2)https://www.cnblogs.com/end/archiv ...

  4. LFCS 系列第二讲:如何安装和使用纯文本编辑器 vi/vim

    LFCS 系列第二讲:如何安装和使用纯文本编辑器 vi/vim 几个月前, Linux 基金会发起了 LFCS (Linux 基金会认证系统管理员Linux Foundation Certified ...

  5. 如何安装和使用纯文本编辑器 vi/vim

    2019独角兽企业重金招聘Python工程师标准>>> 这篇文章是系列教程的第二讲,在这个部分中,我们会介绍 vi/vim 基本的文件编辑操作,帮助读者理解编辑器中的三个模式,这是 ...

  6. 有没有用先留一份,linux vi/vim快捷键

    转载请表明出处http://www.dabu.info/?p=801 Vim/Vi 没有菜单,只有命令 Vim/Vi 工作模式介绍: 插入模式 和  命令模式 是vi的两个基本模式. --插入模式 , ...

  7. vi vim使用总结

    vi/vim 基本使用方法 本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了! vi 编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这 ...

  8. (*长期更新)软考网络工程师学习笔记——Linux操作系统中的vi/vim 编辑器详解

    目录 一.vi/vim概念 (一)vi/vim文本编辑器 (二)gedit文本编辑器 二.vi编辑器分类 三.屏幕编辑器 (一)命令模式 1.进入命令模式 2.命令模式下的常用操作 3.退出命令模式 ...

  9. linux vi编辑器 Ctrl s,Linux命令-----vi/vim编辑器

    也可建立vi到vim的符号连接(即实际调用的是vim) # mv /bin/vi /bin/vi.bak # ln -s /usr/bin/vim /bin/vi 进入vi的命令: vi  直接进入编 ...

  10. Linux文件管理(基础):文件的时间、文件的扩展名、系统目录结构与作用、绝对路径与相对路径、文件管理、vi\vim

    文章目录 一. Linux系统的单根目录结构 文件的时间 文件的扩展名 二. 系统目录结构与作用 三. 绝对路径与相对路径 四. 文件管理 4.1 文件管理之:基本命令 4.2 文件管理之:创建/复制 ...

最新文章

  1. 【青少年编程】【Scratch】06 侦测模块
  2. 区块链智能合约入门:Hello world(2)
  3. Oracle 12c coming soon?
  4. java ide 2017_Intellij ide 2017.2新建javaweb项目,并且部署
  5. Golang 特性简介
  6. win 7 或 mac 远程桌面到 ubuntu (ssh)
  7. 简单的Android文件浏览器(附源代码)
  8. DS3400 RDAC for RedHat5.3安装文档-sunleii@DC
  9. cmd 下通过NTML代理访问Maven 库
  10. 【渝粤题库】陕西师范大学164207 网络经济学 作业(专升本)
  11. 汉印扫描器设置软件_汉印HPRTK180打印机驱动
  12. 15.编写LED程序及反汇编工具
  13. python数据分析09_pandas数据聚合与分组运算
  14. vs2022 E1696 无法打开 源 文件 “string.h“
  15. HIT-哈工大数据结构-作业5(C++)
  16. vue调倍速后声音变了_pr加速人声后声音变调失真怎么办?
  17. 考研部分概念和流程(若不全和错误可提示我补充,另考研帮app推荐)
  18. 一句话木马拿Shell与菜刀原理
  19. 树莓派3B上用Python编程获取TSL2561光传感器数据
  20. 挂件巡检机器人_盘点国内五大智能巡检机器人公司

热门文章

  1. 32位CPU最多支持4G内存是怎么算出来的?(解惑篇)
  2. 影像扫描系统连接服务器失败,您的扫描仪不能与ImageCapture配合使用
  3. 传奇服务器脚本文件在哪个文件夹,传奇私服的GM命令在哪个文件夹里?
  4. 柠檬味百香果饮料怎么制作
  5. SqlServer 查询一段时间,没有数据自动补充0
  6. cmos电路多余输入端能否悬空_CMOS和TTL集成门电路多余输入端的处理方法
  7. RocketMQ产线Broker Busy问题排查经过
  8. Visio 与 office 不兼容问题
  9. 手动获取我们所感兴趣网站X.509证书的一般方法
  10. 【成神之路】Redis相关面试题