sed -i '1d' 的作用是什么?

sed -i '1d' 的作用是什么?

我知道这sed是一个操作文本文件的命令。

从我的谷歌搜索来看,这似乎-i意味着对文件本身执行操作,这是正确的吗?

关于什么'1d'

答案1

sed

  • -i选项将就地编辑输入文件

  • '1d'将删除输入文件的第一行

例子:

% cat file.txt 
foo
bar

% sed -i '1d' file.txt 

% cat file.txt        
bar

请注意,大多数时候最好在使用该-i选项时进行备份,以便在发生任何意外更改时备份原始文件。

例如,如果您这样做:

sed -i.orig '1d' file.txt 

原始文件将保留为file.txt.orig,修改后的文件将为file.txt.

答案2

1.a)

sed '1d' file.txt

打印 的内容file.txt不包括第一行;到标准输出。


2.a)

sed -i    '1d' file.txt # GNU, NetBSD, OpenBSD
sed -i '' '1d' file.txt # FreeBSD, macOS

打印 的内容file.txt不包括第一行;回到file.txt;覆盖原来的。


2.b)

sed -i.back '1d' file.txt

file.txt.back在进行更改之前创建原始文件的备份(如)。除了 FreeBSD 之外sed,后缀(此处.back)必须附加到-i选项(在同一参数中,-i和之间没有空格.back)。


3.a)

sed '2d' file.txt

打印 的内容file.txt不包括第二行;到标准输出。
(指定任何数字将删除相应的行)。

也与标志兼容-i


3.b)

sed '1!d' file.txt

打印内容file.txt排除所有第一行;到标准输出。
(换句话说;仅有的第一行被打印)。

也与标志兼容-i


3.c)

sed '$d' file.txt

打印内容file.txt不包括最后一行;到标准输出。

也与标志兼容-i

答案3

sed -h有:

  -i[SUFFIX], --in-place[=SUFFIX]
             edit files in place (makes backup if SUFFIX supplied)

和“对文件本身执行操作。”绝对是这样。

man说:'Sed 是一个流编辑器。流编辑器用于对输入流(文件或来自管道的输入)执行基本文本转换。

正如你的问题,

sed -i '1d' file_name

方法:删除文件中的第一行"file_name"所在位置并备份到文件。 (就像编辑文件并直接删除第一行一样。)

相关内容