Assumindo que os separadores de campo no arquivo original são guias (e / ou você deseja que a saída seja delimitada por tabulação), então você pode usar awk
da seguinte forma:
awk -F '\t' -v OFS='\t' '{ $1 = sprintf("(%s)", $1) } 1' file
Isso modifica o primeiro campo e, em seguida, gera a linha reformada com o campo modificado. O 1
no final causa a saída e pode ser substituído por { print }
.
Seu código está fazendo algo semelhante a isso, mas você usa $0
, que é o conteúdo da linha todo , não apenas o primeiro campo.
Você também pode usar sed
, o que deixaria o resto da linha intocada:
sed -E 's/^([^[:blank:]]+)/()/' file
Corresponde a qualquer sequência de caracteres não vazia no início da linha e substitui-os pela mesma sequência de caracteres entre parênteses.
Outra variação com sed
que primeiro insere um (
no início da linha e insere um )
antes do primeiro caractere em branco (um caractere "em branco" significa um espaço ou uma tabulação):
sed -E -e 's/^/(/' -e 's/([[:blank:]])/)/' file
A solução awk
é mais flexível, pois permite modificar facilmente qualquer qualquer campo na linha, mas as soluções sed
permitem manter os delimitadores que você tem no original arquivo, sejam eles múltiplos espaços ou tabulações. Eu só incluí as soluções sed
aqui porque você queria modificar o primeiro campo na linha, e esse campo está prontamente disponível para (fácil de encontrar com) um programa sed
.