
В моем .vimrc я перечисляю свои пакеты vundle следующим образом:
cat ~/.vimrc
...
Bundle 'Raimondi/delimitMate'
Bundle 'kien/ctrlp.vim'
Bundle 'matchit.zip'
Bundle 'upAndDown'
Bundle 'rking/ag.vim'
...
Теперь я хотел бы быстро отсортировать свой список пакетов по названию пакетов, что работает для строк, где /
присутствует , например:
cat ~/.vimrc | sort -t "/" -k2,2
...
Bundle 'matchit.zip'
Bundle 'upAndDown'
Bundle 'rking/ag.vim'
Bundle 'kien/ctrlp.vim'
Bundle 'Raimondi/delimitMate'
...
Как мне отсортировать строки, в которых нет foo/
префикса к имени пакета, как, например, в случае Bundle 'matchit.zip'
?
решение1
Вы всегда можете добавить a ./
, а затем снова удалить его. Например:
sed "/\// ! s:^Bundle[[:space:]][[:space:]]*':&./:" ~/.vimrc |
sort -t "/" -k2,2 |
sed "s:\(^Bundle[[:space:]][[:space:]]*\)'\./:\1:"
Или с помощью GNU sed
это можно немного сократить с помощью расширенных регулярных выражений:
sed -r "/\// ! s:^Bundle[[:space:]]+:&./:" ~/.vimrc |
sort -t "/" -k2,2 |
sed -r "s:(^Bundle[[:space:]]+)'\./:\1:"
Или просто используйте один пробел, если вы уверены, что файл целостный.