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_Countet Actual_Record_Countcompter 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é ALERTavec l'en-tête$Target_Dir
echo ${Bus_date} >${Target_Dir}/${Output_File_Name}
Ensuite, j’ajoute le Alert.txtde $Source_Dirau 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.txtdans $Target_Dir.
La bande-annonce contient le nombre d'enregistrements
echo "EOF${Actual_Record_Count}" >>${Target_Dir}/${Output_File_Name}
awkme semble bon: vous pouvez probablement éviter le wc -lproblème et utiliser simplement le nombre d’enregistrements de awk NRdans un ENDbloc, par exemple awk -v bus_date="${BUS_DATE}" 'BEGIN{print bus_date} {print} END{printf "EOF%d\n", NR}' file. S'il BUS_DATEne 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?