假设希望在 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. SQL拦截器

    一.拦截SQL 1.slow log 2.general log 3.mycat sql拦截器 二.mycat sql拦截器 1.配置server.xml # 1.5可用 <system> ...

  2. mysql小白系列_06 备份与恢复

    1.使用mydumper工具全库备份. 1)源码编译安装 2)全库备份 2.误操作truncate table gyj_t1;利用mysqldump的备份和binlog日志对表gyj_t1做完全恢复. ...

  3. Centos7访问Win7/Win10系统中的共享文件

    服务器挂在U盘: 1.先将U盘格式化为Fat格式或其他服务器能识别的格式. 2.使用fdisk -l,找到自己的U盘(根据盘大小) 3.新建一个文件夹(mkdir /mnt/usb)用于挂在数据 4. ...

  4. 导出word excel 方法

    ---导出excel public static void DataTableToExcelXjd(DataTable dt, string Title, string TmpColsName) { ...

  5. ESlint中console.log报错问题

    ESlint中console.log报错问题 由于ESlint规范化,导致console.log的使用也会报错,下面是设置允许console.log控制台输出 描述:打开 package.json 文 ...

  6. 深入理解Java虚拟机(1)

        对于Java程序员,在虚拟机自动内存管理机制的帮助下,不需要再为每一个操作写配对的释放资源操作,不容易出现内存泄露和内存溢出问题.加深对Java虚拟机的理解,有助于在发现问题时精准定位问题,排 ...

  7. ShoneSharp语言(S#)的设计和使用介绍系列(10)— 富家子弟“语句“不炫富

    ShoneSharp语言(S#)的设计和使用介绍 系列(10)— 富家子弟“语句“不炫富 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/Sho ...

  8. 容器技术之Docker数据卷

    前一篇随笔中我们了解了docker的网络相关说明,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12952616.html:今天我们来聊一聊docker的数据管 ...

  9. 获取cookie里面的sessionid

    做接口的时候我们需要获取一个令牌,类似于token以及sessionid这样的签名,也可以说是一个令牌. import urllib.request, urllib.parse, urllib.err ...

  10. [Wireshark]_002_玩转数据包

    通过前一篇文章,我们大概了解了Wireshark,现在可以准备好进行数据包的捕获和分析了.这一片我们将讲到如何使用捕获文件,分析数据包以及时间格式显示等. 1.使用捕获文件 进行数据包分析时,其实很大 ...