gpt4 book ai didi

linux - 如何在使用 sed 的模式之后删除文件末尾之前的所有内容?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:55:42 31 4
gpt4 key购买 nike

我想改变这个:

--- BEGINNING OF file.txt ---
# use another authentication method.

# TYPE DATABASE USER ADDRESS METHOD

# "local" is for Unix domain socket connections only
local all all
--- END ---

...为此:

--- BEGINNING OF file.txt ---
# use another authentication method.

# TYPE DATABASE USER ADDRESS METHOD
--- END ---

这是我最近的尝试(要添加“-i”):

sed "s/^\(.*type\s*database\s*user\s*address\s*method\).*$/\1/i"file.txt

谢谢!

最佳答案

s 命令确实是 sed 的瑞士军刀,但是当您想要删除整行时,它是错误的工具。您需要 d 命令:

sed '0,/type\s\+database\s\+user\s\+address\s\+method/I!d'

地址0,/.../I匹配从文件开头(0)到匹配正则表达式的第一行的所有行,case不敏感(I——在 GNU sed 中可用,但在 POSIX sed 中不可用)。 ! 反转匹配,因此 d 删除匹配的行。 Try it online!

关于linux - 如何在使用 sed 的模式之后删除文件末尾之前的所有内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44832186/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com