regex - Why these commands fail if I concatenate them (with "|")? -
to turn this:
· 阿富汗 country1 · 阿爾及利亞 country2 · 孟加拉 country3 * · 不丹 country4 (請參閱下列*說明處)
into this:
country1,country2,country3,country4
i following:
%s/[^\x00-\x7f]//g
remove chinese characters.
%s/\s\+$//g
remove trailing white spaces
%s/\s\+//g
remove remaining whites paces
g/^$/d
remove empty lines
%s/\n/,/g
connected each line single 1 (each word separated comma).
now want in 1 command. concatenated commands:
%s/[^\x00-\x7f]//g|%s/\s\+$//g|%s/\s\+//g|g/^$/d|%s/\n/,/g
which produces this:
country1,country2,,country3,,country4,
i find strange since commands work if use them separately.
what happening here?
not ex command can concatenated. commands, :global
command, can take sequence of commands, , therefore eat remaining arguments, including |
command separator. see :help :bar
list of such commands. provides solution if want include such command in sequence: need enclose command :execute
. applied problem, becomes:
%s/[^\x00-\x7f]//g|%s/\s\+$//g|%s/\s\+//g|exe 'g/^$/d'|%s/\n/,/g
with this, last :s
command applied entire buffer, , not within scope of :global
command.
Comments
Post a Comment