如何立即将标头和标尾添加到现有文件中

如何立即将标头和标尾添加到现有文件中

有没有一种简单的方法可以将标题和预告片添加到现有文本文件中?同一目录同一文本文件。例如awk
感谢有关如何处理它的解释的一些帮助awk。谢谢。

因为我所知道的包括相当多的步骤。请参考以下内容:

假设我想将标头添加到预告片到现有文件警报.txt
该文件位于名为的目录中$Source_Dir

文本文件包含列名称,因此我有两个变量Record_Count&Actual_Record_Count来计算记录:

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

首先,我创建一个名为的文本文件,ALERT其标题为$Target_Dir

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

Alert.txt然后,我将from添加$Source_Dir到在中创建的新文件中$Target_Dir

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

最后,我继续将预告片添加Alert.txt$Target_Dir.
预告片将包含记录数

echo "EOF${Actual_Record_Count}" >>${Target_Dir}/${Output_File_Name}

答案1

因此,您有一些 shell 变量,$Bus_date您希望将其单独添加到一行中作为标题。然后后面应该是 的内容$Source_Dir/$Output_File_Name,后面是字符串EOFNN,其中NN是该文件中的行数减一。

使用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"

脚本是:

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

在命令行上,我们将awk变量设置head为 的值$Bus_date。该值是在我们开始从给定文件中按块读取之前输出的BEGIN

{ print }块确保给定文件按原样传递,无需修改。

END块使用内置变量NR来保存迄今为止读取的记录(行)数。在END块中,NR将是读取的文件中的行数。

相关内容