shell脚本来提取函数名的一些使用

shell脚本来提取函数名的一些使用

提取函数名

使用awk

#!/bin/bash

filename=mian.c

cat $filename | while read line
do
echo $line | grep '(' | awk -F'(' '{print $1}' | awk -F' ' '{print $NF}'
done

说明:
echo $line : 打印整行语句
grep ‘(’ : 查到有“(”的语句
awk -F ’ ( ’ ‘{print $1}’ : 已’(’ 为分割符,并获取第一段
awk -F’ ’ ‘{print $NF}’ :已空格为分给符,获取第NF段(NF时分割的总段数,这里的意思就是获取最后一段)

while循环

while循环读取文件中内容有两种写法,一种是管道符,一种是重定向,写法如下

管道符:

cat $file_name | while read line

do

  #deal with line

done

重定向

while read line

do

  #deal with line

done < $file_name

inux执行shell时,会创建“子shell”运行shell中的命令,当运行到非内建指令时,会创建“孙shell”运行非内建指令

变量的作用于在每个shell中有效,所以,非内建指令中定义的这些变量就只能在孙shell运行,而在子shell中不生效,所以,即便我在while中给path_all赋值了,子shell中也不会获取到这个值。解决这个问题的办法有两种,如下

如果不是必须使用管道符的方式写while循环,可以用重定向的写法,这种写法循环内的变量在子shell中是生效的,比较简便

如果非要使用管道符的方式,可以创建临时文件,用于存放shell中的输出

sed使用

使用sed进行匹配到关键词后进行替换

1:替换时进行全词匹配

sed -i "s/\b$line\b/$rename_func/g" $1

在词的前后\b

2:在替换时排除一些含有关键词的行

sed -i "/#include/b; s/\b$line\b/$rename_func/g" $1

例如排除要排除#include的行,在前面添加/#include/b

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值