Como adicionar cabeçalho e trailer ao arquivo existente imediatamente

0

Existe uma maneira simples de adicionar cabeçalho & trailer para um arquivo de texto existente? Mesmo diretório mesmo arquivo de texto. Por exemplo, o awk ?
Aprecie alguma ajuda sobre a explicação sobre como processá-lo com awk . Obrigado.

Porque o que eu sei consiste em alguns passos. Por favor, consulte abaixo:

Suponha que eu queira adicionar cabeçalho ao trailer a um arquivo existente ALERT.txt
O arquivo está no diretório chamado $Source_Dir

O arquivo de texto contém o nome da coluna, então eu tenho duas variáveis Record_Count & Actual_Record_Count para contar o registro:

Record_Count='wc -l < ${Source_Dir}/${Output_File_Name} | tr -d " "'
Actual_Record_Count='expr ${Record_Count} - 1'

Primeiro, eu crio um arquivo de texto chamado ALERT com o cabeçalho para $Target_Dir

echo ${Bus_date} >${Target_Dir}/${Output_File_Name}

Em seguida, adiciono o Alert.txt de $Source_Dir ao novo arquivo criado em $Target_Dir

cat ${Source_Dir}/${Output_File_Name} >> ${Target_Dir}/${Output_File_Name}

Por fim, continuo adicionando o trailer ao arquivo Alert.txt in $Target_Dir .
O trailer conterá a contagem de registros

echo "EOF${Actual_Record_Count}" >>${Target_Dir}/${Output_File_Name}
    
por Juliet.Y 15.03.2017 / 04:57

1 resposta

0

Então, você tem alguma variável shell, $Bus_date que você quer adicionar em uma linha sozinha como cabeçalho. Em seguida, deve seguir o conteúdo de $Source_Dir/$Output_File_Name , seguido pela string EOFNN , em que NN é o número de linhas nesse arquivo menos um.

Usando awk :

awk -v head="$Bus_date" 'BEGIN { print head } { print } END { print "EOF" NR-1 }' "$Source_Dir/$Output_File_Name" >"$Target_Dir/$Output_File_Name"

O script é:

BEGIN { print head }
      { print }
END   { print "EOF" NR-1 }

Na linha de comando, definimos a awk variable head para o valor de $Bus_date . Este valor é gerado antes de começarmos a ler a partir do arquivo fornecido, pelo bloco BEGIN .

O bloco { print } garante que o arquivo fornecido seja passado como está, sem modificação.

O bloco END usa a variável interna NR que contém o número de registros (linhas) lidos até o momento. No bloco END , NR será o número de linhas no arquivo que foi lido.

    
por 19.09.2017 / 20:43