gpt4 book ai didi

regex - 使用 sed 匹配模式并从该行删除到文件末尾

转载 作者:IT王子 更新时间:2023-10-29 00:18:06 26 4
gpt4 key购买 nike

我正在尝试匹配来自管道输入和/或文件的模式,然后从匹配的行中删除到文件末尾,包括在内。我到处寻找,但似乎找不到适合我需要的表达方式。

下面的表达式允许我删除到流的开头,包括匹配的模式:

sed -e '1,/Files:/d'

给定一些示例数据:

Blah blah blah
Foobar foo foo
Files:
somefiles.tar.gz 1 2 3
somefiles.tar.gz 1 2 3

-----THIS STUFF IS USELESS-----
BLEH BLEH BLEH
BLEH BLEH BLEH

运行上面的表达式会产生:

Files:
somefiles.tar.gz 1 2 3
somefiles.tar.gz 1 2 3

-----THIS STUFF IS USELESS-----
BLEH BLEH BLEH
BLEH BLEH BLEH

我想实现类似的效果,但方向相反。使用前面表达式的输出,我想从 -----THIS STUFF IS USELESS----- 中删除到文件末尾,包括在内。它应该产生(在经过第一个表达式之后):

Files:
somefiles.tar.gz 1 2 3
somefiles.tar.gz 1 2 3

我也愿意使用任何其他工具,只要它在任何其他 POSIX 系统上可用并且不使用版本特定(例如 GNU 特定)选项。

可在此处找到实际文本:http://pastebin.com/CYBbJ3qr请注意从 -----THIS STUFF IS USELESS----------BEGIN PGP SIGNATURE----- 的更改。

最佳答案

为什么不

 sed '/^-----THIS STUFF IS USELESS-----$/,$d' file

在您使用的范围表达式中,',$' 将指定“到文件末尾”

1 is first line in file, 
$ is last line in file.

输出

Files:
somefiles.tar.gz 1 2 3
somefiles.tar.gz 1 2 3


使用 GNU sed,你可以做

sed '/^-----THIS STUFF IS USELESS-----$/Q' file

其中 Q 类似于 q 退出命令,但不打印匹配行

关于regex - 使用 sed 匹配模式并从该行删除到文件末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14046878/

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