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

Bash 使用shell脚本查找函数参数的数据类型-文本处理,bash,shell,text-processing,Bash,Shell,Text Processing,我有一个包含如下函数签名的文件: 空一些浮点数a,整数b,字符c 使用shell脚本或类似方法,您将如何处理此问题,从而最终得到: float int char这行吗?我不得不用IFS变量和一些for循环做一些体操,但它对我来说似乎很好。如果某些虚线具有前导空格或制表符,则必须调整sed表达式,但是 test.txt test.sh 结果: 所有的代码行都有这样的格式吗?或者你是在试图处理一段类似C的源代码吗?是的,所有的代码行都有完全相同的格式。 void something(float a,

我有一个包含如下函数签名的文件:

空一些浮点数a,整数b,字符c

使用shell脚本或类似方法,您将如何处理此问题,从而最终得到:


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

test.txt

test.sh

结果:


所有的代码行都有这样的格式吗?或者你是在试图处理一段类似C的源代码吗?是的,所有的代码行都有完全相同的格式。
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);
#!/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