我有一个使用r.js的缩小的javascript文件,我需要将文件的全部内容放在第19行的另一个java文件中,所以我尝试了以下命令(Mac):
SRC_FILE=`cat ./javascript.minify.js`
sed "19s/.*/${SRC_FILE}/g" ./Original.java > ./Replace.java这个命令的结果是:
bad flag in substitute command: 'o'因此,我尝试使用perl:
SRC_FILE=`cat ./javascript.minify.js`
cat Original.java | perl -p -e "s/.*/'${SRC_FILE}'/g if $.==19" > ./Replace.java这个命令的结果是:
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:
SRC_FILE=`cat ./javascript.minify.js | base64`
sed "19s/.*/${SRC_FILE}/g" ./Original.java > ./Replace.java谢谢你的评论和一切
发布于 2015-11-13 19:02:45
Sed可以使用r命令直接将文件的内容读取到另一个文件中,而不需要中间的shell变量,这会带来引用和转义问题的噩梦。
这将转到第19行,并在此时读取文件javascript.minify.js:
sed '19 r javascript.minify.js' ./Original.java > ./Replace.java这将在.js中的第19行之后添加Original.java文件的内容,而原始文件则替换第19行的内容。要达到同样的效果,可以在添加文件内容之后删除第19行:
sed -e'19 r javascript.minify.js' -e'19 d' ./Original.java > ./Replace.javahttps://stackoverflow.com/questions/33680029
复制相似问题