我想从'{'创建一个新行。 “{”之后的任何句子都需要在新行中。
Currrent输出:
void logical_jmp(int loc)
int branch_jmp(int loc)
必需的输出:
dirName=$1
if [[ -d $dirName ]]; then
cfile=$(find $dirName -type f -name "*.c"|sort -n)
for i in $cfile; do
echo $i:
if grep -q -E "^void|^int|^FILE*" $i;
then
func=$(cat $i |grep -E "^void|^int|^FILE*"|sed 's/[{$] */\n/g')
echo $func
echo
else
echo Unable to find any functions
fi
done
else
echo file is not a directory
fi
这是任务: 找到给定目录的所有C函数。您的脚本必须以递归方式查看目录并查找所有.c文件并输出其中包含的函数。
我的代码:
i
答案 0 :(得分:2)
简单awk
可能会对您有所帮助。
awk '{gsub(/{ |{/,ORS)} 1' Input_file
答案 1 :(得分:0)
您可以使用tr '{' '\n' | sed 's/^//'
也许你可以用
grep -Eo "^(void|char|int)[^(]+\([^)]*\)" *.c
此正则表达式假设所有函数都是void,char或int类型,类型从行的第一个位置开始,并在行中包含字符()
。
您可以修改正则表达式以满足您的要求。