查找并替换文件中的字符串(macOS bash脚本)?

时间:2019-06-21 01:28:45

标签: bash macos awk sed terminal

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

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)

尝试了多种错误信息的众多sedawk替代方案。
有人可以告诉我一个可行的(macOS 10.14.1)解决方案吗?


更新:我compile.log转换为UTF-8 后,一切正常。似乎Windows环境创建了utf-16le编码的日志。

1 个答案:

答案 0 :(得分:1)

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