SED命令在命令行中工作,但不在脚本内部[文件未找到错误]

时间:2018-05-16 13:52:59

标签: 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_CONSUMPTION_RATE/' *.csv

我收到错误:No such file or directory,此文件显示在我的目录中。

我做错了什么?我确定它有些愚蠢,但我无法弄清楚。

2 个答案:

答案 0 :(得分:2)

我认为你的sed脚本中bash行的末尾有一个迷路字符。是使用Windows编辑器编写的脚本吗?如果是这样,我怀疑最后有一个回车。如果我把回车放进去,我可以复制你的错误。

尝试运行

dos2unix <scriptname>

并重新开始运行。

如果dos2unix无法正常工作,则表示不回车,我建议您使用nano或{{1}将整个脚本重新输入新文件移除迷路。

答案 1 :(得分:1)

你能写这样的剧本

吗?
 sed -i 's/CLOUD_RESOURCE_CONSUMPTION_RATE/CLOUD_RES_CONSUMPTION_RATE/' <path to folder having csv files>/*.csv