lid*_*dia 27 unix shell solaris sed
在Linux sed -i上将修改输入文件.但它在Solaris上不起作用.
sed -i '$ s/OLD/NEW/g' test
sed: illegal option -- i
Run Code Online (Sandbox Code Playgroud)
我可以sed -i在Solaris上使用什么代替?
小智 26
它与sed -i不完全相同,但我遇到了类似的问题.您可以使用perl执行此操作:
perl -pi -e 's/find/replace/g' file
Run Code Online (Sandbox Code Playgroud)
执行复制/移动仅适用于单个文件.如果要在目录和子目录中的每个文件中替换一些文本,则需要执行某些操作.您可以使用perl执行此操作并找到:
find . -exec perl -pi -e 's/find/replace/g' '{}' \;
Run Code Online (Sandbox Code Playgroud)
Joh*_*ica 20
您需要-i通过将结果存储在临时文件中,然后将原始文件替换为临时文件来自行复制行为.这可能看起来不那么优雅,但这一切sed -i都在掩盖之下.
sed '$ s/OLD/NEW/g' test > test.tmp && cat test.tmp > test && rm test.tmp
Run Code Online (Sandbox Code Playgroud)
如果您在意,可以使用以下方法使其更加强大mktemp:
tmp=$(mktemp test.XXXXXX)
sed '$ s/OLD/NEW/g' test > "$tmp" && cat "$tmp" > test && rm "$tmp"
Run Code Online (Sandbox Code Playgroud)