我有一些这样的文字:
UUU F CUU L AUU I GUU V
UUC F CUC L AUC I GUC V
UUA L CUA L AUA I GUA V
UUG L CUG L AUG M GUG V
我想让它看起来像这样:
'UUU': 'F',
'CUU': 'L',
'AUU': 'I',
'GUU': 'V',
'UUC': 'F',
'CUC': 'L',
'AUC': 'I',
'GUC': 'V',
'UUA': 'L',
'CUA': 'L',
'AUA': 'I',
'GUA': 'V',
'UUG': 'L',
'CUG': 'L',
'AUG': 'M',
'GUG': 'V',
使用VIM进行此操作的最佳方式是什么?
答案 0 :(得分:1)
在vim中有很多方法可以做到这一点。一种方法是使用替代。
:%s/\(\w\w\w\) \(\w\)\_s*/'\1': '\2',\r/g
这会查找三个字母后跟一个空格后跟另一个字母,并将前三个字母放在第一个捕获组(\1
)中,将单个字母放入第二个捕获组(\2
) 。我们还使用所有尾随空格(包括带有\_s*
的换行符)。
然后将其替换为'\1': '\2',\r
,其中\r
是换行符。
答案 1 :(得分:1)
如果将其分解为块,则转换不那么令人生畏(并且更容易排除故障)。首先,通过用换行符替换多个空格,将列合并为一个列:
:%s/ \{2,}/\r/g
UUU F
CUU L
AUU I
然后用单引号括起字符串:
:%s/\w\+/'&'/g
'UUU' 'F'
'CUU' 'L'
'AUU' 'I'
在最后添加逗号:
:%s/$/,
'UUU' 'F',
'CUU' 'L',
'AUU' 'I',
添加冒号:
%s/' /': /
'UUU': 'F',
'CUU': 'L',
'AUU': 'I',
......而且你已经确定了。