以下命令工作正常:
sed s/input/raw_input/ p.py >p2.py && mv p2.py p.py
Run Code Online (Sandbox Code Playgroud)
但是,以下命令会将 p.py 转换为空文件:
sed s/input/raw_input/ p.py >p.py
Run Code Online (Sandbox Code Playgroud)
下面的代码也将 p.py 变成了一个空文件:
sed s/input/raw_input/ p.py | cat > p.py
Run Code Online (Sandbox Code Playgroud)
为什么最后两个命令没有按预期运行?特别是为什么 p.py 是空的?
Sie*_*geX 11
这是因为重定向运算符>
在任何命令之前被调用,因此以下顺序发生:
p.py
为写入而打开,截断之前存在的任何内容sed
被调用来执行p.py
现在为空的命令p.py
(所以它仍然不包含任何内容)根据您希望代码的可移植性,您有两种选择:
不便携
使用 GNUsed -i
选项进行就地编辑
便携的
将输出重定向到临时文件,然后在sed
完成后将临时文件移到原始文件上
归档时间: |
|
查看次数: |
351 次 |
最近记录: |