sed -i '1d' 有什么作用?

Jér*_*nge 35 sed

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

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

怎么样'1d'

hee*_*ayl 50

sed

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

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

例子:

% cat file.txt 
foo
bar

% sed -i '1d' file.txt 

% cat file.txt        
bar
Run Code Online (Sandbox Code Playgroud)

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

例如,如果你这样做:

sed -i.orig '1d' file.txt 
Run Code Online (Sandbox Code Playgroud)

原始文件将保持原样file.txt.orig,修改后的文件将是file.txt.

  • 您也可以在不使用 `-i` 的情况下进行“试运行”以查看首先发生的情况,然后使用 `-i` 实际更改文件。 (4认同)

voi*_*ces 16

1. a)

sed '1d' file.txt
Run Code Online (Sandbox Code Playgroud)

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


2. a)

sed -i    '1d' file.txt # GNU, NetBSD, OpenBSD
sed -i '' '1d' file.txt # FreeBSD, macOS
Run Code Online (Sandbox Code Playgroud)

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


2. b)

sed -i.back '1d' file.txt
Run Code Online (Sandbox Code Playgroud)

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


3. a)

sed '2d' file.txt
Run Code Online (Sandbox Code Playgroud)

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

也兼容-i标志。


3. b)

sed '1!d' file.txt
Run Code Online (Sandbox Code Playgroud)

打印内容file.txt不包括所有第一行; 到标准输出。
(换句话说;打印第一行)。

也兼容-i标志。


3. c)

sed '$d' file.txt
Run Code Online (Sandbox Code Playgroud)

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

也兼容-i标志。


小智 5

sed -h有:

  -i[SUFFIX], --in-place[=SUFFIX]
             edit files in place (makes backup if SUFFIX supplied)
Run Code Online (Sandbox Code Playgroud)

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

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

作为你的问题,

sed -i '1d' file_name
Run Code Online (Sandbox Code Playgroud)

意思是:删除文件"file_name"中的第一行并备份到文件。(就像编辑文件并直接删除第一行一样。)