所以我有一个名为 SED.sed 的脚本。该脚本是为了处理汽车数据的数据集而制作的,为了澄清我想首先解释我的脚本所需的功能。我想做三件事
- 用几十年代替几年。该集合仅包含 1970-89 年的汽车,因此我们将年份替换为适当的十年。 ex(1972年和1974年将替换为70年代)
- 汽车制造商和型号在一对双引号下给出。我用单引号替换了它们,并将品牌与型号分开。因此“Honda civic lx”“audi 500s(柴油)”变成“honda”“civic lx”和“audi”“500s(柴油)”
- 如果有数据丢失,某些数据行包含“?”。我想从数据集中删除这些行。
话虽这么说,我的脚本如下所示
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 行产生了一条错误消息,因此我可以查明问题所在。问题出现在带有?
符号的第四行。我在它前面添加了一个反斜杠,但脚本没有运行。