使用shell脚本查找函数参数的数据类型 - 文本处理

时间:2011-10-18 20:21:15

标签: bash shell text-processing

我有一个带有这样功能签名的文件:

void something(float a, int b, char c);

使用shell脚本或类似方法,您将如何处理它,以便最终得到:

float int char

1 个答案:

答案 0 :(得分:0)

这会有用吗?我不得不用IFS变量和一些for循环做一些体操,但它似乎对我来说很好。如果某些“void”行有前导空格或制表符,则必须调整sed表达式...

<强>的test.txt

void something(float a, int b, char c);
void something_else(string s, int p);
void test(float test);
void tata(string k);
void foobar(float a, int l, char e);

<强> test.sh

#!/bin/bash
filename=$1
OLD_IFS=$IFS
IFS=$'\n'
trap "rm -f $$.tmp" EXIT SIGHUP
for line in $(egrep -i "^void\ " $filename | sed -e 's/^void \w*(\(.*\));/\1/'); do
        IFS=,
        for s in $line; do
                echo $s | awk '{print $1}' >> $$.tmp
        done
        IFS=$'\n'
done
IFS=$OLD_IFS
sort $$.tmp | uniq | tr "\n" " "
echo
exit 0

<强>结果:

$ ./test.sh test.txt
char float int string