如何使用 sed 删除模式后直到文件末尾的所有内容?

wme*_*zen 0 linux sed

我想改变这一点:

--- 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 ---
Run Code Online (Sandbox Code Playgroud)

...对此:

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

# TYPE  DATABASE        USER            ADDRESS                 METHOD
--- END ---
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢你!

Jor*_*ing 5

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

\n\n
sed \'0,/type\\s\\+database\\s\\+user\\s\\+address\\s\\+method/I!d\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

地址0,/.../I匹配从文件开头 ( 0) 到与正则表达式匹配的第一行的所有行,不区分大小写(I\xe2\x80\x94 在 GNU sed 中可用,但在 POSIX sed 中不可用)。!反转匹配,从而删除d匹配的行。在线尝试一下!

\n