Bash SED命令在命令行中工作,但不在脚本中[未找到文件错误]
我试图做一个非常简单的任务:我想用另一个单词替换CSV文件头中出现的一个单词。停下来 我还希望对我当前文件夹中的所有CSV执行此操作 如果我在命令行中运行它,它将非常有效Bash SED命令在命令行中工作,但不在脚本中[未找到文件错误],bash,shell,sed,Bash,Shell,Sed,我试图做一个非常简单的任务:我想用另一个单词替换CSV文件头中出现的一个单词。停下来 我还希望对我当前文件夹中的所有CSV执行此操作 如果我在命令行中运行它,它将非常有效 sed -i 's/CLOUD_RESOURCE_CONSUMPTION_RATE/CLOUD_RES_CONSUMPTION_RATE/' *.csv 但如果我在shell脚本中运行它,如下所示: #!/bin/bash sed -i 's/CLOUD_RESOURCE_CONSUMPTION_RATE/CLOUD_RES
sed -i 's/CLOUD_RESOURCE_CONSUMPTION_RATE/CLOUD_RES_CONSUMPTION_RATE/' *.csv
但如果我在shell脚本中运行它,如下所示:
#!/bin/bash
sed -i 's/CLOUD_RESOURCE_CONSUMPTION_RATE/CLOUD_RES_CONSUMPTION_RATE/' *.csv
我得到一个错误:没有这样的文件或目录
,这个文件出现在我的目录中
我做错了什么?我敢肯定这有点傻,但我想不出来。你能这样写剧本吗
sed -i 's/CLOUD_RESOURCE_CONSUMPTION_RATE/CLOUD_RES_CONSUMPTION_RATE/' <path to folder having csv files>/*.csv
sed-i's/CLOUD\u RESOURCE\u CONSUMPTION\u RATE/CLOUD\u RES\u CONSUMPTION\u RATE/'/*.csv
你能这样写脚本吗
sed -i 's/CLOUD_RESOURCE_CONSUMPTION_RATE/CLOUD_RES_CONSUMPTION_RATE/' <path to folder having csv files>/*.csv
sed-i's/CLOUD\u RESOURCE\u CONSUMPTION\u RATE/CLOUD\u RES\u CONSUMPTION\u RATE/'/*.csv
我认为您的bash
脚本中的sed
行末尾有一个游离字符。脚本是使用Windows编辑器编写的吗?如果是这样的话,我怀疑最后会有一辆马车返回。如果我放一个回车,我可以复制你的错误
试着跑步
dos2unix <scriptname>
dos2unix
然后重新运行
如果
dos2unix
不起作用,那就不是回车,我建议使用nano
或vim
将整个脚本重新键入一个新文件,以删除杂散字符。我想您的bash
脚本中的sed
行末尾有一个杂散字符。脚本是使用Windows编辑器编写的吗?如果是这样的话,我怀疑最后会有一辆马车返回。如果我放一个回车,我可以复制你的错误
试着跑步
dos2unix <scriptname>
dos2unix
然后重新运行
如果
dos2unix
不起作用,那就不是回车,我建议使用nano
或vim
将整个脚本重新输入到一个新文件中,以删除杂散的脚本。我试过了。同样的结果。即使我键入一个文件名而不是我尝试的“*.csv”。同样的结果。即使我键入一个文件名而不是“*.csv”,您是否可以包含完整的错误消息?您是在Windows计算机上编写脚本的吗?听起来这两种情况下的工作目录是不同的。无论运行脚本时的工作目录是什么,它都不包含任何扩展名为csv
的文件。请包含完整的错误消息好吗?您是在Windows计算机上编写脚本的吗?听起来这两种情况下的工作目录是不同的。无论运行脚本时工作目录是什么,它都不包含任何扩展名为csv
的文件。我已经运行了dos2unix
命令,但它运行得并不完美。非常感谢。正如你所说。我已经运行了dos2unix
命令,但它运行得并不完美。非常感谢。