Eu tenho um módulo de software que contém alguns arquivos com o mesmo padrão.
<whitespaces>private static final long serialVersionUID = \dL;
Como posso encontrar arquivos com o mesmo valor?
$ grep -R serialVersionUID
./path/to/Some.java: private static final long serialVersionUID = 111L;
./path/to/Other.java: private static final long serialVersionUID = 222L;
./path/to/Another.java: private static final long serialVersionUID = 111L;
Não é aquele recuo anterior diferente entre as colunas.
Agora quero encontrar esses arquivos com o mesmo valor na segunda coluna ( private static final ...
)?
$ grep -R serialVersionUID | .....
./path/to/Some.java: private static final long serialVersionUID = 111L;
./path/to/Another.java: private static final long serialVersionUID = 111L;
Obrigado.
Isso foi tudo que consegui encontrar até agora...
$ grep -R serialVersionUID | sed 's/[ ][ ]*/ /g' | sort -k 2
Tenho uma melhoria, mas imprime apenas a segunda coluna.
$ grep -R serialVersionUID | sed 's/[ ][ ]*/ /g' | sort -k 2 | uniq -f 2 -d
Usando qualquer POSIX
sort
eawk
com os OPs originaisgrep -R
:Com relação a
[ ][ ]
- os espaços em branco já são literais em uma regexp, você não precisa colocá-los dentro de uma expressão entre colchetes./[ ][ ]*/
é idêntico a/ */
. Talvez você pretendesse usar/[ \t][ \t]*/
para combinar repetições de espaços em branco ou tabulações? Você não precisa dissosed
, basta adicionar a-b
opçãosort
como fiz acima para ignorar os espaços iniciais em um campo.O texto acima pressupõe que os nomes dos arquivos gerados por
grep -R
não contenham espaços em branco. Se puderem, precisaremos de uma solução diferente que não comece comgrep -R
.