只保留一行的最后10个字符



我有一个文件,如下

!J INCé0001438823
#1 A LIFESAFER HOLDINGS, INC.é0001509607
#1 ARIZONA DISCOUNT PROPERTIES LLCé0001457512
#1 PAINTBALL CORPé0001433777
$ LLCé0001427189
$AVY, INC.é0001655250
& S MEDIA GROUP LLCé0001447162

我只想保留每行的最后10个字符,这样它就变成如下:-

0001438823
0001509607
0001457512
0001433777
0001427189
0001655250
:%s/.*(.{10})/1
:                     ex-commaned
%                    entire file
s/                  substitute
.*                anything (greedy)
.             followed by any character
{10}       exactly 10 of them
(       )     put them in a match group
/    replace with
1  said match group

我认为这是一个shell脚本问题。在vim中输入以下内容:

:%! rev|cut -c1-10|rev

:%!将通过下面的过滤器管道传输整个缓冲区,然后过滤器直接从这里来。

对于可以使用的单行:

$9hd0
$       go to end of line
9h     go 9 characters left
d0   delete to beginning of line

假设é字符在一行中只出现一次,并且只出现在目标的十位数字之前,那么这似乎是可行的:

:%s/^.*é//:命令%所有线路s//替换(即搜索和替换(/^从行首开始搜索,.包括任何字符(通配符(,*前面字符的任意数量,é查找"é";//替换为/和/之间的内容(即,无(

注意,可以使用ctrl-k e'(control-k,然后是e,然后是撇号,不带空格(键入é字符。至少在我的系统上,这在插入模式下工作,并且当键入";替换";命令(要查看可以使用ctrl-k"有向图"功能调用的字符列表,请使用:dig:digraph

最新更新