Linux和Mac系统的
sed
命令稍有差别,其中,如果需要直接修改源文件,都需要加-i
参数
Mac下必须给-i
指定参数值,如-i '.bak'
,系统将备份源文件,备份的文件名为 源文件名 +-i
后的参数值,如源文件名为filename.txt
,则备份文件名为filename.txt.bak
,若不需要备份源文件,则需要将-i
参数值为空字符串,即-i ''
。
Linux下跟-i
参数仅表示直接修改源文件。
删除指定行
- 删除第123行
sed '123d' filename.txt
上述命令不会直接修改源文件,直接修改源文件,并将源文件备份为 filename.txt.bak
的命令如下(此处演示 -i
参数用法,下同):
sed -i '.bak' '123d' filename.txt # Mac
sed -i '123d' filename.txt # Linux (不会备份源文件)
- 删除第99行和第123行
sed '99d;123d' filename.txt