Gnu 정렬을 사용하여 일부 줄에만 필드 구분 기호가 있는 줄을 정렬하는 방법

Gnu 정렬을 사용하여 일부 줄에만 필드 구분 기호가 있는 줄을 정렬하는 방법

내 .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:"

또는 파일이 일관성이 있다고 확신하는 경우 단일 리터럴 공백을 사용하십시오.

관련 정보