【发布时间】:2016-03-20 17:56:32
【问题描述】:
我正在 MINIX 上编写一个 BASH shell 脚本,我想用某个字符串的编号完全替换文件的特定行,并且这个替换将覆盖到原始文件。没有印在stdout上。
行号和替换字符串是脚本的变量,名称如下:
line (e.g. 8)
repstring (e.g. "134|Wan|Cho|1988-03-20")
所以我正在尝试以下代码:
sed -i "${line}s/.*/${repstring}/" $filename
但是当我尝试执行脚本时,我收到了消息:
sed: unknown option -- i
usage: sed [-aEnr] script [file ...]
sed [-aEnr] [-e script] ... [-f script_file] ... [file ...]
是否可以用其他方式编辑此文件?
附言我知道将sed 的输出重定向到一个新文件,然后将新文件移动到原始文件,但我不想在此过程中创建任何其他文件。
【问题讨论】:
-
看来你的-i参数无效。查看 sed 的手册页。 -i 参数需要扩展名,在这种情况下,您没有添加扩展名。
-
我刚刚在这里读到:grymoire.com/Unix/Sed.html#uh-62h 但我已经尝试过
pkgin update和pkgin install sed,但它说数据库是最新的。那么手动安装该扩展的正确方法是什么? -
@ClaudioCorsi
-i选项不需要扩展名即可执行就地编辑,但添加扩展名(例如-i.bak)将创建原始文件的备份,现在具有.bak扩展名。 -
它在错误消息中说,他的
sed版本不支持-i选项。无法使用。