假设希望在 file_to_modified 文件最后新增一行以下信息:传入 shell 脚本文件的第一个参数,以及当前时间(YYYY-MM-DD HH:MMS)

  • 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;
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);
}

以上为日前工作中遇到的问题,记录在引, 供日后及他人参考。

sed中使用shell变量的更多相关文章

  1. 在sed中引入shell变量的四种方法

    1.eval sed ’s/$a/$b/’ filename2.sed "s/$a/$b/" filename3.sed ’s/’$a’/’$b’/’ filename 4.sed ...

  2. [转帖]Linux教程(20)- Linux中的Shell变量

    Linux教程(20)- Linux中的Shell变量 2018-08-24 11:30:16 钱婷婷 阅读数 37更多 分类专栏: Linux教程与操作 Linux教程与使用   版权声明:本文为博 ...

  3. awk中使用shell变量

    方法:使用-v参数. 对于多个shell变量使用多个-v 有个关于shell变量中的空格问题:

  4. awk中引用shell变量的方法

    1.通过命令行参数定义变量时引用: awk -v awk变量名= shell变量名 #!/bin/bash var4bash=test awk -v var4awk="$var4bash&q ...

  5. linux系统中关于shell变量$*与$@的区别

    在我们初学linux系统shell时,可能会感觉$@与$*没什么区别,如下面shell脚本: #!/bin/bash# name:a.sh # echo 'this script $* is: '$* ...

  6. awk中引用shell变量执行替换的脚本

    遇到问题: 现在有两个脚本,我想 将file1中的内容按file2来匹配 [root@154 home]# cat file1 3-1-1 POTV=1,POTA=0,POTP=2 1-4-76 PO ...

  7. 正则表达式中引用shell变量

    注意,是用单引号包含双引号来引用变量 > MAPPING_ID_PO="000001:AP1-TU1000002:AP1-TU2000003:AP1-TU3000004:AP1-TU4 ...

  8. sed修炼系列(四):sed中的疑难杂症

    本文目录:1 sed中使用变量和变量替换的问题2 反向引用失效问题3 "-i"选项的文件保存问题4 贪婪匹配问题5 sed命令"a"和"N" ...

  9. linux中shell变量$#,$@,$0,$1,$2的含义

    linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行 ...

随机推荐

  1. poj1966枚举源汇点 求最小点割DInic

    Cable TV Network Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 4854   Accepted: 2241 ...

  2. POJ2516

    题目链接:http://poj.org/problem?id=2516 解题思路: 最小费用最大流,这个没什么疑问.但此题小难点在于读题,大难点在于建图. 首先,供应量小于需求量的时候直接输出“-1” ...

  3. 量子纠错码——Clifford group

    Clifford code Clifford group是什么? 简单的公式来表达,就是 \(Cl_{n}=\left\{U: U P_{n} U^{\dagger} \in P_{n}\right\ ...

  4. 设计模式:Filter+Servlet+反射

    传统设计 分类管理需要:增加,删除,编辑,修改,查询5个服务端功能. 一个路径对应一个Servlet的思路,就需要设计5个Servlet类,并且在web.xml中配置5个路径. CategoryAdd ...

  5. 博客管理与文章发布系统-第三方模块及其用法Part1

    写个帖子记录一下自己写的第一个express完整项目. 所需第三方模块及其用法. 一.先把所需文件和准备工作写一下 写项目前的准备 1.创建所需文件夹 public 静态资源 model 数据库操作 ...

  6. GitHub 热点速览 Vol.21:Go 新手起手式,学就完事儿了

    作者:HelloGitHub-小鱼干 摘要:说到学习之道,方法很重要,好的学习方法能让你比他人更快地入门到精通,比如本周被 3k 多人 pick 的 learngo 项目,它收录了多个例子和练习,新手 ...

  7. Jmeter(三) - 从入门到精通 - 测试计划(Test Plan)的元件(详解教程)

    1.简介 上一篇中宏哥已经教你如何通过JMeter来创建一个测试计划(Test Plan),那么这一篇我们就将JMeter启动起来,创建一个测试计划(Test plan),然后宏哥给大家介绍一下测试计 ...

  8. day20 函数闭包与装饰器

    装饰器:本质就是函数,功能是为其他函数添加新功能 原则: 1.不修改被装饰函数的源代码(开放封闭原则) 2.为被装饰函数添加新功能后,不修改被修饰函数的调用方式 装饰器的知识储备: 装饰器=高阶函数+ ...

  9. 五、Spring Web应用程序构建

    内容 映射请求到Spring控制器 透明地绑定表单参数 校验表单提交 关键词 模型-视图-控制器(Model-View-Controller,MVC) 处理器映射(handle mapping) 视图 ...

  10. C语言/Linux命令行参数argc、argv[ ]详解

    1.void main(int argc,char *argv[]) argv[]:表示的是一个指针数组,一共有argc个元素,其中存放的是指向每一个参数的指针. argc:参数个数 2.以Linux ...