tps*_*wal 12 solaris sed text-processing
我在我的项目中有一个要求,将文件中的一些现有文本替换为foo其他一些文本,例如fooofoo:
abc.txt
name
foo
foo1
Run Code Online (Sandbox Code Playgroud)
所以我试过:
abc.txt
name
foo
foo1
Run Code Online (Sandbox Code Playgroud)
但是我收到这个错误:
sed:非法选项——
i
我在手册中发现我必须使用:
sed -i "s/foo/fooofoo/g" abc.txt
Run Code Online (Sandbox Code Playgroud)
但是,这也不起作用。
我在perl和 中找到了替代方案,awk但sed非常感谢Solaris 中的解决方案。
我正在使用这个版本的 bash:
GNU bash,版本 3.2.57(1)-release (sparc-sun-solaris2.10)
don*_*sti 15
使用ed. 它在大多数平台上都可用,并且可以就地编辑您的文件。
因为sed基于ed语法替换模式是类似的:
ed -s infile <<\IN
,s/old/new/g
w
q
IN
Run Code Online (Sandbox Code Playgroud)
如果您无法安装 GNU sed,请使用:
sed "s/foo/fooofoo/g" abc.txt >abc.tmp && mv abc.tmp abc.txt
Run Code Online (Sandbox Code Playgroud)
这使用重定向将 sed 的输出发送到临时文件。如果 sed 成功完成,那么这将abc.txt用临时文件覆盖。
从 GNU sed 的源代码可以看出,这正是sed -i它的作用。因此,这与sed -i.
如果可能abc.tmp已经存在,那么您可能希望使用mktemp或类似的实用程序来为临时文件生成唯一名称。
| 归档时间: |
|
| 查看次数: |
21161 次 |
| 最近记录: |