首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bash错误sed:-e表达式#1,字符3:未知命令:`/‘

bash错误sed:-e表达式#1,字符3:未知命令:`/‘
EN

Stack Overflow用户
提问于 2013-07-10 00:14:16
回答 2查看 2.2K关注 0票数 1

我已经写了这个脚本bash,它必须写一个带有不同数字的特定行的文件(例如:"9.0E-8“... )所以我必须有最后一个文件,在for循环之后,"9.0E-11“对应"9.0E-7”。

代码语言:javascript
复制
#!/bin/sh

touch IC_masslessPlanetesimal.java

for n in "9.0E-8" "9.0E-8" "9.0E-9" "9.0E-10" "9.0E-11"
do  
sed -i "21s/9\.0E-7/$n/" IC_masslessPlanetesimal.java
javac IC_masslessPlanetesimal.java
java IC_masslessPlanetesimal
done

现在,脚本必须重新编辑、编译和运行file.java,代码运行时没有错误。现在的问题是:当我查看第21行的file.java (这是scrpt必须更改的数字)时,scrpt只编辑第一个for-cycle,因为当它再次尝试用其他字符串("9.0E-9“等)替换字符串时。脚本找不到最后一个!

第一个表示步骤) 9e-7 -> 9e-8:脚本查找9e-7并替换为n=9e-8秒表示步骤) 9e-8 -> 9e-9:脚本找不到9e-8字符串,也无法更改它!

所以我必须重写for选项来合并这个修改。

请猜猜看:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-10 00:22:36

sed命令的语法为

代码语言:javascript
复制
[ address(es) ] command

21被解释为地址,即行号。因此,/被视为命令,因此出现错误。

你想做什么?如果要在第21行将9.0e7替换为$n,请使用

代码语言:javascript
复制
21s/9\.0E7/$n/
票数 2
EN

Stack Overflow用户

发布于 2013-07-10 00:20:47

错误在这里:

代码语言:javascript
复制
sed -i "21/9.0E7/$n" 

因为您在21之后没有提供任何sed命令。

您是否在sed命令中忘记了s (替换开关)?

它可能应该是:

代码语言:javascript
复制
sed -i "s/9.0E7/$n/" 

或者可能是这样的:

代码语言:javascript
复制
sed -i "21s/9.0E7/$n/" 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17553199

复制
相关文章

相似问题

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