首页 > 解决方案 > 查找和替换文件中的字符串(macOS bash 脚本)?

问题描述

我有一个日志文件,如下所示:

compile.log

C:\Program Files\File.ext(25,10) : error <ERROR_CODE>: <ERROR_MESSAGE>
C:\Program Files\File.ext(36,13) : error <ERROR_CODE>: <ERROR_MESSAGE>
C:\Program Files\File.ext(41,51) : warning <WARNING>: <WARNING>
C:\Program Files\File.ext(64,55) : error <ERROR_CODE>: <ERROR_MESSAGE>
 : information: result 3 error(s), 1 warning(s)

并希望它是这样的:

compile.log

/Users/user/Library/Folders/Program Files/File.ext(25,10) : error <ERROR_CODE>: <ERROR_MESSAGE>
/Users/user/Library/Folders/Program Files/File.ext(36,13) : error <ERROR_CODE>: <ERROR_MESSAGE>
/Users/user/Library/Folders/Program Files/File.ext(41,51) : warning <WARNING>: <WARNING>
/Users/user/Library/Folders/Program Files/File.ext(64,55) : error <ERROR_CODE>: <ERROR_MESSAGE>
 : information: result 3 error(s), 1 warning(s)

尝试了许多带有各种错误消息的替代方案sed。有人可以向我展示一个有效的(macOS 10.14.1)解决方案吗?awk


更新:在我转换compile.log为 UTF-8之后,一切都按预期工作。似乎是 windows 环境创建了utf-16le编码的日志。

标签: bashmacosawksedterminal

解决方案


sed 's/C:\\Program Files\\File.ext/\/Users\/user\/Library\/Folders\/Program Files\/File.ext/g' compile.log > compile-replaced.log


推荐阅读