linux的shell编程应用,Linux学习之shell编程应用

最近,因为要在IAR上移植contiki操作系统,除了各种报错之外还有一大堆warning,看着不爽。发现waning的原因基本上都一样:Warning[Pa050:] non-native end of line sequence detected 。因为,contiki的源码是在linux下用gcc编译的,每个文件的换行符和windows下的换行符不同。于是我将这些warning信息保存在一个文件中,比如log.txt,想在linux下写一个shell脚本,用unix2dos命令将这些换行符改成windows下的形式。

log.txt文件中的内容为:

0818b9ca8b590ca3270a3433284dd417.png

观察一下还是有规律的:每一行数据都以“:”为分隔符分为3个字段:Warning[Pa050]、warning的信息、warning对应的文件路径。对我来说有用的就是最后一个字段,文件路径。下面开始:

先获取文件路径

[buptlsl@MyCentos Desktop]$ cat log.txt |awk 'FS=":"{print $3}'

结果为:

0818b9ca8b590ca3270a3433284dd417.png

我想要的部分是contiki\core\lib\random.h这种格式,所以还要处理一下

把contiki之前的部分和random.h之后的部分都去掉

[buptlsl@MyCentos Desktop]$ cat log.txt |awk 'FS=":"{print $3}'|sed 's/^.*lsl_01//g'|sed 's/ .*$//g'

sed 's/ .*$//g表示把每一行从文件名之后的部分去掉结果:

\contiki\core\contiki-net.h

\contiki\core\net\rime\announcement.h

\contiki\core\contiki-version.h

\contiki\core\sys\autostart.h

\contiki\core\contiki-version.h

\contiki\core\contiki-net.h

\contiki\core\contiki-version.h

\contiki\core\contiki-version.h

\contiki\core\net\rime\channel.h得到需要的文件路径了,保存成log2.txt

下面只需要写一个for循环

for file in `cat log2.txt`

do

unix2dos $file

done

结果,发现报错,原来问题出在路径上:在windows下路径分隔符为\,而在linux下为/,所以还需要把log2.txt中所有的\替换为/

sed -i 's/\\/\//g'

注意,\和/都为特殊字符,要用转义符转义,即“\\”表示“\”,“\/”表示“/”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值