Como adicionar um prefixo a cada linha de uma coluna específica em um arquivo csv via linha de comando no linux

1
    Então, basicamente, eu estou tentando alcançar o seguinte.

    

    Arquivo antes de editar.

coluna-1, coluna-2, coluna-3, coluna-4, coluna-5
    Linha-1-c1, linha-1-c2, linha-1-c3, linha-1-c4, linha-1-c5
    Linha-2-c1, linha-2-c2, linha-2-c3, linha-2-c4, linha-2-c5
    Linha-3-c1, linha-3-c2, linha-3-c3, linha-3-c4, linha-3-c5
    Linha-4-c1, Linha-4-c2, Linha-4-c3, Linha-4-c4, Linha-4-c5
    Linha-5-c1, Linha-5-c2, Linha-5-c3, Linha-5-c4, Linha-5-c5
    
    Arquivo após a edição

    coluna-1, coluna-2, coluna-3, coluna-4, coluna-5
    Linha-1-c1, linha-1-c2, prefixo-linha-1-c3, linha-1-c4, linha-1-c5
    Linha-2-c1, linha-2-c2, prefixo-linha-2-c3, linha-2-c4, linha-2-c5
    Linha-3-c1, linha-3-c2, prefixo-linha-3-c3, linha-3-c4, linha-3-c5
    Linha-4-c1, Linha-4-c2, Prefixo-Linha-4-c3, Linha-4-c4, Linha-4-c5
    Linha-5-c1, linha-5-c2, prefixo-linha-5-c3, linha-5-c4, linha-5-c5

    observe que column-3 é a coluna que o prefixo é adicionado a cada linha individual, exceto o cabeçalho da coluna.     
por Jerome Ricketts 15.06.2014 / 03:59

1 resposta

1

Substitua $3 pelo número da coluna para alteração, <prefix> pelo prefixo, <inputfile> e <outputfile> pelo nome do arquivo de entrada e o nome do arquivo de saída respectivamente.

awk '{$3="<prefix>"$3; print}' <inputfile> ><outputfile>

Notei em seu exemplo que a primeira linha não foi modificada; se você quiser esse comportamento, use o seguinte comando:

awk '{if(NR==1){print; next}; $3="<prefix>"$3; print}' <inputfile> ><outputfile>
    
por 15.06.2014 / 04:28