简体   繁体   English

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

[英]Find and replace string in file (macOS bash script)?

I have a log file, like this: 我有一个日志文件,像这样:

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)

And want it like this: 并希望这样:

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)

Tried numerous sed and awk alternatives with various error messages. 尝试了许多sedawk替代方案,以及各种错误消息。
Could someone show me a working (macOS 10.14.1) solution? 有人可以告诉我一个可行的(macOS 10.14.1)解决方案吗?


UPDATE: Everything works as expected, after I converted compile.log to UTF-8 . 更新:我compile.log转换为UTF-8后,一切都按预期工作。 Seemingly the windows environment created the log utf-16le encoded. 似乎Windows环境创建了编码为utf-16le的日志。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM