示例:
"word" -nothing
要
word" - nothing
在gvim。
我试过
:%s/^.*\"/
但我得到的是: - 没什么
我是脚本新手,所以我想知道是否可以使用gvim或awk或sed等其他方式完成。
答案 0 :(得分:0)
请您试着跟随并告诉我这是否对您有帮助。
awk '{sub(/^"/,"");sub(/-/,"- ")} 1' Input_file
解决方案第二 :使用sed
。
sed 's/^"//;s/-/- /' Input_file
答案 1 :(得分:0)
如果我正确理解了您的问题,您想要用空字符串替换每行中的第一个"
。所以在sed
只是:
sed 's/"//'
如果没有g
标记,它将仅替换每行中的第一个匹配项。
修改强>
它在Vim中的工作方式相同(除非你设置了'gdefault'
选项),所以在Vim中你可以:
:%s/"//
答案 2 :(得分:0)
由于您还标记了grep
:GNU grep为PCRE(Perl兼容的reg ex)设置了-P
开关,其中\K
:保留\ K的剩余部分,不要将它包含在$& 中,所以:
$ echo \"word\" | grep -oP "\"\Kword\""
word"
答案 3 :(得分:0)
在vim中...检查\(
字+引号+空格+连字符\)
作为第一个参考,然后直接使用另一个\(
字\)
作为第二个参考。 ..替换为第一个引用+空格+第二个引用...确保查找/替换可以在g
后缀的行上多次发生。
:%s/\(\w" -\)\(\w\)/\1 \2/g
请注意,我遗漏了引用的引用...我想你可能在引用的文本中有空格 - 我认为这种形式对你来说可能更好。现在在sed中,这是关于* nix工具之间关系的非常酷的东西 - 它们都使用相似(或相同)的正则表达式模式语言。因此,可以在sed中完成与上述完全相同的模式(为了清楚起见,使用:
作为分隔符)。
sed 's:\(\w" -\)\(\w\):\1 \2:g'
Awk不做背引用;所以,不是说它无法做到,而是不太方便。
答案 4 :(得分:0)
试试这个:
:%S / \ “(。*)\”/ \ 1 \“/ GC