我知道这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"
所在位置并备份到文件。 (就像编辑文件并直接删除第一行一样。)