Shell每日闪记1

原创 2016年08月30日 21:23:24

需求:批量地在当前目录(包含子目录)中的某些文件(例如*.gnu)的开头插入一些固定内容的行(例如"set term jpeg size 600,900 …")。


方案:可利用如下命令(find + sed)

find . -name '*.gnu' -exec sed  -i '1i\set term jpeg size 600,900\nset output "band.jpg"' {} \;

如果想要顺便用gnuplot把图画出来,则可以使用如下脚本

#!/bin/bash
find . -name '*.gnu' | while read line
do
    cd $(dirname $line)
    sed -i '1i\set term jpeg size 600,900\nset output "band.jpg"' ${line##*/}
    gnuplot --persist ${line##*/}
    cd -
done

注:以上脚本第5行的${line##*/}代表仅保留$line变量(形如./.../.../....gnu)的最右面的‘/’后面的内容,即去掉路径,仅保留文件名;而上一句中的dirname $line则正好相反,仅取路径。之所以这样处理,而不是删掉第4行并把第5行中的${line##*/}改成$line,是因为gnuplot用来做图的数据文件在*.gnu文件所在的目录中,所以需要进入该目录才能操作。


参考:

dirname:http://codingstandards.iteye.com/blog/800028

Linux shell字符串截取与拼接:http://www.linuxidc.com/Linux/2015-03/115198.htm

gnuplot入门教程:http://blog.csdn.net/liyuanbhu/article/details/8502383

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

shell脚本学习每日一句(1)

shell的学习入门极难,这我是知道了,想想自己学习shell也差不多半年了,其中总是学学停停,没有一点儿的转眼劲儿,看来是不能将这shell学好了。所以想到这样的一招来督促自己好好学习shell,积...

#Java基础——每日随记(1)

Java基础——每日随记java中“==”用于表示匹配内存单元的内容是否相等。 如果是原始类型,如byte、boolean、short、char、int、long、float、double,则表示值相...
  • yuhao22
  • yuhao22
  • 2016年12月21日 21:18
  • 69

Android appWidget每日一句修正1

  • 2012年01月17日 00:56
  • 529KB
  • 下载

每日一shell之例行任务管理at和cron命令

但一时刻执行一次任务atat now + 30 minutes//进入at命令并设定时间是从现在开始的30分钟后 /sbin/shutdown -h now//关机命令 之后用ctrl+D结束输入...

shell脚本学习每日一句(2)

5月21号 晚上8点更新 employee文件中记录了工号和姓名 employee.txt: 100 Jason Smith  200 John Doe  300 Sanjay Gupta ...

shell每日一句(4)

6月4号 下午2点 把单个数据替换成单个字母与字符串替换的比较: 其中,‘y/abc/123/'就是指将单个字符对应的替换符号填充进去。a对应1、b对应2、c对应3 [root@fsai...

shell每日更新(7)

这里说明下最近一段时间一直没有更新的原因吧,也是自己偷懒的原因:上周的六级考试。 这里我会一直坚持写完shell的学习历程: 6月25号晚上9点 shell脚本编写的一些规则: 1,开头 程...

每日一shell之字符处理grep sort uniq cut tr paste split

grep搜索文本grep -[icvn]‘匹配字符’ 文件名 -i不区分大小写 -c统计匹配行数 -n输出行号 -v反向匹配(就是不包含匹配字符的行) 需要注意的一点是有了-c这个选项输...

每日一题(1): poj2676: Sudoku

1. 题目的意思很简单。但是原来不知道怎么下手进行深搜。后来看到点击打开链接的思路,使用三个bool二维数组进行标记,才茅塞对开。在此表示感谢。推荐看看。 2. 其实就是怎么判断的问题,因为搜索还是...

每日一题之二进制下1的个数

题目: 输入一个整数n,输出这个整数二进制下1的个数。 读入样例: 13 输出: 3 解释: 13二进制下是1101,一共3个1。 看到这道题,首先应考虑到: n是一个整数,而不是正整数,因此,读入...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Shell每日闪记1
举报原因:
原因补充:

(最多只允许输入30个字)