Um método geral para classificar por uma função arbitrária do conteúdo da linha é o seguinte:
- Obtenha a chave pela qual você deseja classificar e copie-a para o início da linha
- Classificar
- Exclua a chave do começo da linha
Aqui está uma chave que você pode usar neste caso em particular: este programa sed
produzirá a linha do último identificador até o final.
% sed -e 's/^.*[^[:alnum:]_]\([[:alpha:]][[:alnum:]_]*\)//' < decls
albumArtView; // 1
profileView; // 2
postFB; // 3
saveButton; // 4
Para colocar essas chaves e as linhas originais lado a lado:
% paste <(sed -e 's/^.*[^[:alnum:]_]\([[:alpha:]][[:alnum:]_]*\)//' < decls) decls
Para ordená-los ...
| sort
e deixar apenas o segundo campo (a linha original)
| cut -f 2-
Todos juntos (ordenando em ordem inversa, então há algo para mostrar):
% paste <(sed -e 's/^.*[^[:alnum:]_]\([[:alpha:]][[:alnum:]_]*\)//' < decls) decls \
| sort -r \
| cut -f 2-
→
@property (nonatomic, assign) UIButton *saveButton; // 4
@property (nonatomic, strong, readonly) UIImageView *profileView; // 2
@property (nonatomic, strong, readwrite) UIButton *postFB; // 3
@property (nonatomic, strong) id <AlbumArtDelegate, UITextFieldDelegate> *albumArtView; // 1