sed中使⽤shell变量
假设希望在 file_to_modified ⽂件最后新增⼀⾏以下信息:传⼊ shell 脚本⽂件的第⼀个参数,以及当前时间(YYYY-MM-DD HH:MM S)
date "+%Y-%m-%d %H:%M:%S"
以上命令可以输出要求格式的当前⽇期与时间
sed –i ‘$a text1 text2’ file_to_modified
使⽤ sed 在⽂件末尾新增⼀⾏,新增⼀⾏的内容为 text1 text2
在sed中,如果希望使⽤ shell 变量,则应当使⽤双引号将其括起来,如下:
sed -i '$a '"$1 ""$(date "+%Y-%m-%d %H:%M:%S")"'' file_to_modified
再进⼀步,如果希望使⽤ fpintf 语句⽣成以上的语句,则应考虑到转义字符等,如下:
FILE* shellFile;
fprintf格式if ((shellFile = fopen("/tmp/genGSMResetLog.sh", "w")) != NULL)
{
fprintf(shellFile, "#!/bin/sh\n\n");
fprintf(shellFile, "max_lines=101\n"); // max 100 entries.
fprintf(shellFile, "file_path=/opt/dnt/log/gsmresetlog\n\n");
fprintf(shellFile, "if [ ! -f $file_path ]; then\n");
fprintf(shellFile, "\ttouch $file_path\n");
fprintf(shellFile, "\techo \"Counter Hilo Reset date and time (UTC)\" >> $file_path\n");
fprintf(shellFile, "fi\n\n");
fprintf(shellFile, "sed -i \'$a \'\"$1 \"\"$(date \"+%%Y-%%m-%%d %%H:%%M:%%S\")\"\'\' $file_path\n"); // append the lasted entry in the last line
fprintf(shellFile, "lines=$(sed -n \'$=\' $file_path)\n");
fprintf(shellFile, "if [ \"$lines\" -gt \"$max_lines\" ]; then\n");
fprintf(shellFile, "\tsed -i \'2d\' $file_path\n"); // deleted 2nd line (the oldest entry)
fprintf(shellFile, "fi\n\n");
fprintf(shellFile, "exit 0");
fclose(shellFile);
}
以上为⽇前⼯作中遇到的问题,记录在引,供⽇后及他⼈参考。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论