我尝试使用:
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"将其保存在另一个文件中,我在标题中提到了这个错误。
如果我单独运行此代码就可以了。
这里有什么问题???
答案 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