COMP_ID=` echo $SRC | sed -e 's/.*COMP_ID=//' -e 's/:.*$//'`
SRC_TYP=` echo $SRC | sed -e 's/.*SRC_TYP=//' -e 's/:.*$//'`
DOC_TYP=` echo $SRC | sed -e 's/.*DOC_TYP=//' -e 's/:.*$//'`
SRC_ID=` echo $SRC | sed -e 's/.*SRC_ID=//' -e 's/:.*$//'`
ACC=` echo $SRC | sed -e 's/.*ACC=//' -e 's/:.*$//'`
PASS=` echo $SRC | sed -e 's/.*PASS=//' -e 's/:.*$//'`
POP=` echo $SRC | sed -e 's/.*POP=//' -e 's/:.*$//'`
REMOTE_HOST=` echo $SRC | sed -e 's/.*REMOTE_HOST=//' -e 's/:.*$//'`
REMOTE_PATH=` echo $SRC | sed -e 's/.*REMOTE_PATH=//' -e 's/:.*$//'`
ARCHIVE_PATH=` echo $SRC | sed -e 's/.*ARCHIVE_PATH=//' -e 's/:.*$//'`
我想使用 vim (或 vi) 将各部分对齐到-e 's/:.*$//'
相同的列号。最简单、最快捷的方法是什么?(echo ..| sed ..
暂时忽略难看的部分)
答案1
答案2
无需插件即可完成此操作,如下所示:
:%s#\(.*\)\zs\ze-e#\=repeat(' ',58-len(submatch(1)))
注意:这假设这-e
是最后一行。但如果它不适合你的情况,你可以用其他方式捕获它。
解释:
%s#\(.*\)
- 捕获 之前的行-e
。\zs\ze
- 在这里开始和停止比赛。-e#
— 就在 之前-e
。- 在这里使用
\zs
和\ze
让我们可以直接在前面添加空格(否则就可以-e
连接)。.submatch(x)
\=repeat(' ',58-len(submatch(1)))
- 用可变数量的空格替换这个位置以及58
您的目标列的位置。