sed:我的 sed 脚本中“s”的未知选项

sed:我的 sed 脚本中“s”的未知选项

所以我有一个名为 SED.sed 的脚本。该脚本是为了处理汽车数据的数据集而制作的,为了澄清我想首先解释我的脚本所需的功能。我想做三件事

  1. 用几十年代替几年。该集合仅包含 1970-89 年的汽车,因此我们将年份替换为适当的十年。 ex(1972年和1974年将替换为70年代)
  2. 汽车制造商和型号在一对双引号下给出。我用单引号替换了它们,并将品牌与型号分开。因此“Honda civic lx”“audi 500s(柴油)”变成“honda”“civic lx”和“audi”“500s(柴油)”
  3. 如果有数据丢失,某些数据行包含“?”。我想从数据集中删除这些行。

话虽这么说,我的脚本如下所示

s/"([^" ]+) +([^"]+)"$/'"'\1' '\2'/"
s/7[0-9]( )/70s/g
s/8[0-9]( )/80s/g
/?/d

然后我将这个脚本传递到 sed 命令中,如下所示 sed -E -i -f SED.sed auto-mpg.data

这给了我以下错误 sed: file SED.sed line 1: unknown option to `s'

答案1

找到了答案。我删除了"第 1 行末尾的 ,这在第 4 行产生了一条错误消息,因此我可以查明问题所在。问题出现在带有?符号的第四行。我在它前面添加了一个反斜杠,但脚本没有运行。

相关内容