torr - encontre uma string feita de 4 números com um caractere precedente e adicione o caractere

0

Estou tentando criar um comando sed que me permitirá pesquisar e substituir alguns valores em um arquivo csv grande. Eu tenho essa coluna que contém anos, como 2005 - 2006 2001 - 2003 e assim por diante, mas eu também tenho alguns erros que deixaram o arquivo csv com muitas células que contém -2001 -2010 -1998 e assim por diante. O que eu quero fazer é mover o caractere - no final da string, como -2001 se torna 2001- e assim por diante. O padrão é o mesmo em todas as células afetadas, todos os valores são feitos do caractere - + o ano composto de 4 números.

sed -e "^-[0-9][0-9][0-9][0-9]"

Eu sou novo no regex e atualmente alguns usam tutoriais.

    
por Roberto C 27.07.2015 / 15:55

1 resposta

2

sed -e "s/^-\([0-9][0-9][0-9][0-9]\)/-/" file.csv

A parte entre \( e \) é referenciada na peça de substituição por , permitindo substituir por "o que corresponde à pesquisa".

Observe que, se você estiver usando um arquivo csv, isso só funcionará se a coluna for realmente a primeira ( ^ corresponde ao início da linha). Se a coluna está em outro lugar, você pode querer usar

sed -e 's/\(,[[:space:]]*\)-\([0-9][0-9][0-9][0-9]\)/-/' file.csv

em vez disso. (detectando o início da coluna por uma vírgula possivelmente seguida de espaços e, em seguida, reutilizando o início da substituição.)

    
por 27.07.2015 / 16:12