我有一个带有这样功能签名的文件:
void something(float a, int b, char c);
使用shell脚本或类似方法,您将如何处理它,以便最终得到:
float int char
答案 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