有没有一种简单的方法可以将标题和预告片添加到现有文本文件中?同一目录同一文本文件。例如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
将是读取的文件中的行数。