我有一个文件,如下
!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