Você pode usar sed
:
sed -ir 's/^([0-9]{2}-[0-9]{2}) /\t/' file
Explicação
sed
é um "editor de fluxo". Pense nisso como uma linguagem de programação simples projetada principalmente para editar texto. A opção -i
permite editar o arquivo no lugar. Execute o comando sem o -i
primeiro para garantir que ele produza o resultado desejado (o arquivo permanecerá inalterado) e execute-o com -i
para manter as alterações. O -r
permite extensões regulares estendidas que, neste caso, simplificam o formato.
O s/foo/bar/
é o "operador de substituição". Ele substituirá a primeira instância de foo
em cada linha por bar
. Aqui, estamos alimentando uma expressão regular que significa "corresponde ao início da linha ( ^
), depois dois dígitos ( [0-9]{2}
), menos -
, outros 2 dígitos e depois um espaço. Como esse padrão está dentro de parênteses, é "capturado" e disponibilizado como . Portanto, o comando irá substituí-lo por si mesmo seguido por uma tabulação (
\t
).
Ou perl
:
perl -i -pe 's/(\d{2}-\d{2}) /\t/' file
Explicação
Isso é muito parecido com o sed
acima, mas usando perl
, outra linguagem de script. O -i
tem a mesma função que para sed
. O -p
significa "imprimir todas as linhas depois de aplicar o script dado a -e
.
O operador de substituição é novamente o mesmo apenas que aqui podemos usar a abreviatura \d
para dígitos.