iOS Swift文件特定代码行提取需求:导出至文本文件
从多个Swift文件提取含特定内容的代码行并保存到文本文件
方案一:用终端命令行快速实现(推荐新手)
这是最快捷的方式,无需编写代码,直接用系统自带的grep命令:
打开终端,用
cd命令导航到你的Swift项目根目录,比如:cd /Users/你的用户名/你的Swift项目路径执行以下命令,递归搜索所有
.swift文件中包含.title的行,并将结果保存到title_lines.txt文件中:grep -r "\.title" --include="*.swift" . > title_lines.txt参数说明:
-r:递归搜索当前目录下的所有子目录"\.title":指定要匹配的内容,反斜杠是为了转义正则中的通配符.,确保匹配实际的点号--include="*.swift":只搜索Swift格式的文件,避免匹配其他无关文件.:表示搜索起始目录为当前目录> title_lines.txt:将命令输出重定向保存到指定文本文件
(可选)如果需要排除单行注释中的匹配内容(比如
// 这里是.title的注释),可以用下面的命令:grep -r "\.title" --include="*.swift" . | grep -v "^//" > title_lines.txt-v "^//"表示排除所有以//开头的行。
方案二:用Swift脚本定制提取逻辑
如果你需要更复杂的过滤规则(比如处理多行注释、精确匹配赋值语句等),可以写一个Swift脚本实现:
- 在项目根目录创建一个名为
ExtractTargetLines.swift的文件,内容如下:import Foundation // 配置提取参数 let targetSubstring = ".title" let targetFileExtension = "swift" let outputFileName = "title_lines.txt" let rootDir = FileManager.default.currentDirectoryPath // 递归查找所有目标格式文件 func findAllTargetFiles(in directory: String) -> [URL] { var fileURLs = [URL]() let fileManager = FileManager.default guard let enumerator = fileManager.enumerator(at: URL(fileURLWithPath: directory), includingPropertiesForKeys: nil) else { return fileURLs } for case let url as URL in enumerator { if url.pathExtension.lowercased() == targetFileExtension { fileURLs.append(url) } } return fileURLs } // 从单个文件中提取包含目标内容的行(附带文件名) func extractTargetLines(from fileURL: URL, target: String) -> [String] { guard let fileContent = try? String(contentsOf: fileURL) else { return [] } let lines = fileContent.components(separatedBy: .newlines) // 过滤出包含目标内容的行,并添加文件名前缀方便定位 return lines.filter { $0.contains(target) } .map { "\(fileURL.lastPathComponent): \($0)" } } // 执行提取并保存结果 let allTargetFiles = findAllTargetFiles(in: rootDir) var resultLines = [String]() for file in allTargetFiles { let lines = extractTargetLines(from: file, target: targetSubstring) resultLines.append(contentsOf: lines) } let outputURL = URL(fileURLWithPath: rootDir).appendingPathComponent(outputFileName) try? resultLines.joined(separator: "\n").write(to: outputURL, atomically: true, encoding: .utf8) print("提取完成,结果已保存到 \(outputFileName)") - 在终端导航到项目根目录,执行以下命令运行脚本:
脚本会自动遍历所有Swift文件,提取包含swift ExtractTargetLines.swift.title的行并保存到文本文件中,每行都会附带对应的文件名,方便你快速定位代码位置。
内容的提问来源于stack exchange,提问作者Prithiveram Chandrasekaran
相关产品推荐
相关产品推荐

