有一个a.txt文件
如何写一个脚本,然后运行脚本后,会自动删除a.txt的前三行内容
[b]问题补充:[/b]
为什么在Unix中
某某命令 a文件 > a文件
把这个命令的标准输出重定向到文件本身 会造成里面内容为空
[b]问题补充:[/b]
sed '1,3' filename > filename
会造成filename为空的 不知道为什么
不止sed 其他命令都这样 当把标准输出到自己文件时就造成这种情况
抱歉我脑残了……
用这样的脚本吧
[code="sh"]#!/bin/sh
sed '1,3d' $1 > $1.modified
mv $1.modified $1[/code]
如果输入参数跟重定向的输出参数是同一个文件,那么shell会将那个文件以w模式打开(于是原本的内容就都没了)然后把这个文件接到FD1(也就是STDOUT)上。咪……
直接用sed '1,3d' FILENAME > FILENAME就行了吧,没必要专门写个脚本
例如,对这样的文件(假如叫test.txt)
[code]123
456
789
ABC
DEF
GHI[/code]
执行sed '1,3d' ./test.txt > ./test.txt,得到:
[code]ABC
DEF
GHI[/code]
或者直接
[code="sh"]sed -i '1,3d' FILENAME[/code]
我都忘了sed有in-place editing mode了……主要是我用的MSys上这sed没有-i可用 T T