-
Notifications
You must be signed in to change notification settings - Fork 22
/
hufeng.sh
executable file
·65 lines (43 loc) · 2.26 KB
/
hufeng.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/bin/sh
# 第一步
# 需求:接收一个输入参数作为目录
# 1.先找出该目录下所有的.xcodeproj文件
# 2.解析每个.xcodeproj文件中的包含的类
# 3.把上述的结果汇总成一个表,写文件保存
# 第二步
# 需求:接收一个输入参数作为源文件
# 1.先解析出该文件里所有的类
# 2.计算每个类在可执行文件里所占的大小
# 3.跟第一步的结果进行汇总,从而计算出每个工程在可执行文件里所占的大小
echo "Hello World!";
#yourname="hufeng";
#echo $yourname;
#unset yourname; #删除变量,只读变量不能删除
# yourname="haha"
#echo "${yourname}";
#readonly yourname='fgg';
#echo ${yourname};
# for file in `ls /etc`;do
# echo $file;
# done
filePath=$1; #文件目录
fileExtension="pbxproj";
#找出指定目录下的所有指定格式的文件
#find $filePath -name "*.${fileExtension}" > fileAllList.txt;
#把搜索结果传递给数组
fileArray=($(find $filePath -name "*.${fileExtension}"));
echo ${fileArray[0]}; #取出数组第一个元素
testFile=${fileArray[0]};
echo $testFile;
sed -n '/.m in Sources /p' $testFile > sourceFile.txt; #找出所有包含指定字符创的行,并存储为文件
sed -n '/Begin PBXBuildFile section/,/End PBXBuildFile section/p' $testFile > PBXBuildFile.txt; #找出指定的一段文本,并存储为文本
#sed -n '/Begin PBXBuildFile section/,/End PBXBuildFile section/p' $testFile | grep -Ev '(^Begin)' > tempClassList.txt;
line_count=`cat PBXBuildFile.txt | wc -l`; #计算文件行数
echo $line_count;
end_line=$[line_count-1]; #做数字运算
sed -n "2,$[line_count-1]p" PBXBuildFile.txt > tempClassList.txt; #去掉第一行和最后一行
#sed是行匹配,awk是列匹配,此处为提取第3列的内容
awk '{print $3}' tempClassList.txt > realClassList.txt; #提取所有的类和其他文件,此时包含storyboard和xib
#grep ".m" realClassList.txt > hufengReal.txt; #提取出所有的.m文件,差不多是相当于所有的类
grep ".m" realClassList.txt | grep -v "Tests.m" > classListUsed.txt; #这是双grep实现逻辑与的操作,提取出所有的类,注意文件的位置
sed "s/.m/\n/" classListUsed.txt > finalClassList.txt; #去掉.m,只留下类的名称,原理是把.m字符用回车换行替换掉