sed:file skripta.txt第1行:`s'的未知选项

时间:2016-02-22 23:16:22

标签: bash unix sed

我尝试使用:

sed -e 's/miza/stol/g' datoteka1.txt | sed -e '/klop/d' | sed -e '/^$/d' | sed -e 's/janez/Janez/g'

在名为skripta.txt的文件中,使用" sed -f skripta.txt> datoteka2.txt"将其保存在另一个文件中,我在标题中提到了这个错误。

如果我单独运行此代码就可以了。

这里有什么问题???

2 个答案:

答案 0 :(得分:1)

这是一个使用sed而不是sed脚本的shell脚本。

使用bash skripta.txt > datoteka2.txt

运行它

答案 1 :(得分:0)

所以让我直截了当地说:

您有一个名为skripta.txt的文件,其中只包含以下行:

sed -e 's/miza/stol/g' datoteka1.txt | sed -e '/klop/d' | sed -e '/^$/d' | sed -e 's/janez/Janez/g'

您尝试使用

运行它
$ sed -f skripta.txt

这是对的吗?

错误并不令人惊讶,因为它只需要sed命令,而不是在脚本文件中调用sed本身。

它会将第一个s的初始sed解释为“搜索和替换”,但以下语法ed不匹配。

您可以将skripta.txt更改为shell脚本:(您也可以将其名称更改为skripta.sh):

#!/usr/bin/env bash
sed -e 's/miza/stol/g' datoteka1.txt | sed -e '/klop/d' | sed -e '/^$/d' | sed -e 's/janez/Janez/g'

将其模式更改为可执行文件:

$ chmod u+x skripta.sh

然后你可以称之为:

$ ./skripta.sh

或者您可以通过移除所有sed将其转换为seds脚本:

s/miza/stol/g
/klop/d
/^$/d
s/janez/Janez/g

然后你可以用

运行它
$ sed -f skripta.txt < datoteka1.txt > datoteka2.txt