vi/vim查看空格、制表符等特殊符号
一、背景
在对CTI服务器上的phone_roa_seg.ini文件的号段信息进行更新时。之前都是直接在VI里进行编缉添加的,不过后来发现里面有一些重复的和错误的数据。所以决定从数据库提了下最新的号段的信息对该文件进行更改。于是先用pl/sql 查出结果后,导出为excel里,再由excel中复制到UE中,最后粘到linux文件里。不过更新完后两天,就收到客户大量的投诉信息。提示业务在使用中对固化(不加区号)进行拨打时会转到杭州的号段上。也就是说系统自动给固化呼叫加上了0571的区号。于是就想到了修改的文件上。后来通过使用文件比对发现两个文件不一样。乍一看和改之前的文件并没有什么区别。
后来在十六进制下比对发现:空格符为十六进制下的20,而excle中的制表空格符为19。找到了问题,重新更改,业务进程重新加载后,问题解决。
phone_roa_seg.ini文件格式如下:
- 1342900 0579
- 1342901 0579
- 1342902 0579
- 1342910 0571
- 1342911 0571
- 1342915 0571
- 1342916 0571
- 1342917 0571
二、解决方法
PL/sql导出结果为TSV文件,然后UE编缉,点选“将制表符更换为空格”,OK,完成收工。
后来又想了下,在linux vi下应该也能实现修改。vi删除多余空格:
- 行末:$
- 行首:^
- 空格:\s
- 行末空格:\s+$
- 行首空格:^+\s
有些人认为行末的空格是无用,浪费而难看的。要删除这些每行后面多余的空格,可以执行如下命令:
- :%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命令:
- sed 's/^M//g' file_old > file_new
执行后查看不成功,输出的文件,用vi打开,还是带^M。
后来到网上搜到了可以用的办法,用tr命令:
- tr -d "15" < myfile.txt > myfile_new.txt
可以把符号^M(即"15")去掉,并另存为新文件myfile_new.txt 。
四、vim显示空格、tab字符及多行注释
1、显示 TAB 键
文件中有 TAB 键的时候,你是看不见的。要把它显示出来:
- :set list TAB
显示为 ^I,$显示在每行的结尾,表示换行,Vim 可以用高亮显示空格和TAB。
2、vim 的搜索及替换
如果没有指定范围,则只在当前行进行搜索替换。
在所有行进行搜索替换。范围符号%表示在所有行进行搜索替换。
- :%s/from/to/
就是在全文查找from并替换为to。
在指定的行上进行搜索替换。
- :1,50s/from/to/
表示在第1行和第50行之间(包括1和50行)进行搜索和替换。
- :45s/from/to/
表示仅仅在第45行进行搜索和替换。而"1,$"行号范围和“%“是等价的。
3、Vim多行缩进技巧
关键字: vim indent
按v进入visual状态,选择多行,用>或<缩进或缩出
通常根据语言特征使用自动缩进排版:
在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行。你可以试试把代码缩进任意打乱再用n==排版,相当于一般IDE里的code format。
使用gg=G可对整篇代码进行排版。
vim 多行注释
- :20,30 s/^/#/g 第20到30行用 # 注释掉。
- :20,30 s/^#//g 取消注释
- :4,10 s/^[^I ]+// 去掉行首的空白字符 用 . 表示当前行。
- :.,30 s/^/#/g 可以看到 vim 命令针对当前行,在前面加个范围就可以针对多行。
- :co 12 把当前行 copy 到行 12 的地方。
总结:以后在使用UE编缉此类文件时,自动点选上“显示空格和制表符”及“显示行结尾”。
转载:http://www.361way.com/vi-char/362.html
vi/vim查看空格、制表符等特殊符号相关推荐
- VIM查看空格,换行,TAB键
" 启用List模式,用CTRL-I显示制表符,用$显示行结束符 set list "这样会出现大量的^I和$不方便查看,更改下符号,TAB会被显示成 ">-&qu ...
- LINUX查看文件内容命令cat vi/vim more tail head的区别
缘起 用过linux的同学应该都知道,在linux中查看文件内容有好几个命令都可以实现,包括但不限于以下这些 cat vi more tail head 那么这些命令都有什么区别呢?又分别在什么时候用 ...
- 解决vi/vim中粘贴会在行首多很多缩进和空格的问题
解决vi/vim中粘贴会在行首多很多缩进和空格的问题 参考文章: (1)解决vi/vim中粘贴会在行首多很多缩进和空格的问题 (2)https://www.cnblogs.com/end/archiv ...
- LFCS 系列第二讲:如何安装和使用纯文本编辑器 vi/vim
LFCS 系列第二讲:如何安装和使用纯文本编辑器 vi/vim 几个月前, Linux 基金会发起了 LFCS (Linux 基金会认证系统管理员Linux Foundation Certified ...
- 如何安装和使用纯文本编辑器 vi/vim
2019独角兽企业重金招聘Python工程师标准>>> 这篇文章是系列教程的第二讲,在这个部分中,我们会介绍 vi/vim 基本的文件编辑操作,帮助读者理解编辑器中的三个模式,这是 ...
- 有没有用先留一份,linux vi/vim快捷键
转载请表明出处http://www.dabu.info/?p=801 Vim/Vi 没有菜单,只有命令 Vim/Vi 工作模式介绍: 插入模式 和 命令模式 是vi的两个基本模式. --插入模式 , ...
- vi vim使用总结
vi/vim 基本使用方法 本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了! vi 编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这 ...
- (*长期更新)软考网络工程师学习笔记——Linux操作系统中的vi/vim 编辑器详解
目录 一.vi/vim概念 (一)vi/vim文本编辑器 (二)gedit文本编辑器 二.vi编辑器分类 三.屏幕编辑器 (一)命令模式 1.进入命令模式 2.命令模式下的常用操作 3.退出命令模式 ...
- 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 直接进入编 ...
- Linux文件管理(基础):文件的时间、文件的扩展名、系统目录结构与作用、绝对路径与相对路径、文件管理、vi\vim
文章目录 一. Linux系统的单根目录结构 文件的时间 文件的扩展名 二. 系统目录结构与作用 三. 绝对路径与相对路径 四. 文件管理 4.1 文件管理之:基本命令 4.2 文件管理之:创建/复制 ...
最新文章
- 【青少年编程】【Scratch】06 侦测模块
- 区块链智能合约入门:Hello world(2)
- Oracle 12c coming soon?
- java ide 2017_Intellij ide 2017.2新建javaweb项目,并且部署
- Golang 特性简介
- win 7 或 mac 远程桌面到 ubuntu (ssh)
- 简单的Android文件浏览器(附源代码)
- DS3400 RDAC for RedHat5.3安装文档-sunleii@DC
- cmd 下通过NTML代理访问Maven 库
- 【渝粤题库】陕西师范大学164207 网络经济学 作业(专升本)
- 汉印扫描器设置软件_汉印HPRTK180打印机驱动
- 15.编写LED程序及反汇编工具
- python数据分析09_pandas数据聚合与分组运算
- vs2022 E1696 无法打开 源 文件 “string.h“
- HIT-哈工大数据结构-作业5(C++)
- vue调倍速后声音变了_pr加速人声后声音变调失真怎么办?
- 考研部分概念和流程(若不全和错误可提示我补充,另考研帮app推荐)
- 一句话木马拿Shell与菜刀原理
- 树莓派3B上用Python编程获取TSL2561光传感器数据
- 挂件巡检机器人_盘点国内五大智能巡检机器人公司
热门文章
- 32位CPU最多支持4G内存是怎么算出来的?(解惑篇)
- 影像扫描系统连接服务器失败,您的扫描仪不能与ImageCapture配合使用
- 传奇服务器脚本文件在哪个文件夹,传奇私服的GM命令在哪个文件夹里?
- 柠檬味百香果饮料怎么制作
- SqlServer 查询一段时间,没有数据自动补充0
- cmos电路多余输入端能否悬空_CMOS和TTL集成门电路多余输入端的处理方法
- RocketMQ产线Broker Busy问题排查经过
- Visio 与 office 不兼容问题
- 手动获取我们所感兴趣网站X.509证书的一般方法
- 【成神之路】Redis相关面试题