首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sed或perl替换java文件中的minify javascript源

使用sed或perl替换java文件中的minify javascript源
EN

Stack Overflow用户
提问于 2015-11-12 19:47:04
回答 1查看 314关注 0票数 1

我有一个使用r.js的缩小的javascript文件,我需要将文件的全部内容放在第19行的另一个java文件中,所以我尝试了以下命令(Mac):

代码语言:javascript
复制
SRC_FILE=`cat ./javascript.minify.js`
sed "19s/.*/${SRC_FILE}/g" ./Original.java > ./Replace.java

这个命令的结果是:

代码语言:javascript
复制
bad flag in substitute command: 'o'

因此,我尝试使用perl:

代码语言:javascript
复制
SRC_FILE=`cat ./javascript.minify.js`
cat Original.java | perl -p -e "s/.*/'${SRC_FILE}'/g if $.==19" > ./Replace.java

这个命令的结果是:

代码语言:javascript
复制
Bareword found where operator expected at -e line 1, near "bowels"
syntax error at -e line 1, near "bowels "
Can't find string terminator '"' anywhere before EOF at -e line 1.

我如何告诉sed或perl替换是一个字符串?

固定

要做到这一点,唯一的方法是使用base64:

代码语言:javascript
复制
SRC_FILE=`cat ./javascript.minify.js | base64`
sed "19s/.*/${SRC_FILE}/g" ./Original.java > ./Replace.java

谢谢你的评论和一切

EN

回答 1

Stack Overflow用户

发布于 2015-11-13 19:02:45

Sed可以使用r命令直接将文件的内容读取到另一个文件中,而不需要中间的shell变量,这会带来引用和转义问题的噩梦。

这将转到第19行,并在此时读取文件javascript.minify.js:

代码语言:javascript
复制
sed '19 r javascript.minify.js' ./Original.java > ./Replace.java

这将在.js中的第19行之后添加Original.java文件的内容,而原始文件则替换第19行的内容。要达到同样的效果,可以在添加文件内容之后删除第19行:

代码语言:javascript
复制
sed -e'19 r javascript.minify.js' -e'19 d'  ./Original.java > ./Replace.java
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33680029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档