Existe-t-il un moyen simple d’ajouter un en-tête et une fin à un fichier texte existant? Même répertoire même fichier texte. Par exemple le awk
?
Appréciez l’aide fournie pour expliquer comment la traiter awk
. Merci.
Parce que ce que je sais consiste en quelques étapes. S'il vous plaît se référer à ci-dessous:
Supposons que je veuille ajouter un en-tête à fin de fichier dans un fichier existant ALERT.txt.
Le fichier se trouve dans le répertoire appelé$Source_Dir
Le fichier texte contient le nom de la colonne, donc j’ai deux variables Record_Count
et Actual_Record_Count
compter l’enregistrement:
Record_Count=`wc -l < ${Source_Dir}/${Output_File_Name} | tr -d " "`
Actual_Record_Count=`expr ${Record_Count} - 1`
Tout d'abord, je crée un fichier texte appelé ALERT
avec l'en-tête$Target_Dir
echo ${Bus_date} >${Target_Dir}/${Output_File_Name}
Ensuite, j’ajoute le Alert.txt
de $Source_Dir
au nouveau fichier créé dans$Target_Dir
cat ${Source_Dir}/${Output_File_Name} >> ${Target_Dir}/${Output_File_Name}
Enfin, je continue d’ajouter la bande-annonce au fichier Alert.txt
dans $Target_Dir
.
La bande-annonce contient le nombre d'enregistrements
echo "EOF${Actual_Record_Count}" >>${Target_Dir}/${Output_File_Name}
awk
me semble bon: vous pouvez probablement éviter le wc -l
problème et utiliser simplement le nombre d’enregistrements de awk NR
dans un END
bloc, par exemple awk -v bus_date="${BUS_DATE}" 'BEGIN{print bus_date} {print} END{printf "EOF%d\n", NR}' file
. S'il BUS_DATE
ne s'agit en réalité que d'un horodatage, vous pourrez peut-être également le générer en interne (du moins avec GNU awk).
printf '%s\n%s\n%s\n' "HEADER" "$(<alert.txt)" "FOOTER" >alert.txt.tmp && mv alert.txt.tmp alert.txt
?