小编edl*_*oaa的帖子

使用awk或sed查找特定模式并打印完整文本块

如何在文本块中找到特定的数字并打印以关键字开头并以?结尾的完整文本块?基本上这是我的文件的样子:"BEGIN""END"

BEGIN
A: abc
B: 12345
C: def
END

BEGIN
A: xyz
B: 56789
C: abc
END

BEGIN
A: ghi
B: 56712
C: pqr
END

[...]
Run Code Online (Sandbox Code Playgroud)

如果我在寻找'^B: 567',我想得到这个输出:

BEGIN
A: xyz
B: 56789
C: abc
END

BEGIN
A: ghi
B: 56712
C: pqr
END
Run Code Online (Sandbox Code Playgroud)

我可以在这里使用grep(grep -E -B2 -A2 "^B: 567" file),但我希望得到一个更通用的解决方案.我想awksed可能会这样做!?

谢谢!:)

regex awk sed

5
推荐指数
2
解决办法
4205
查看次数

SED:删除两个模式之间的特定行

我正在尝试使用过滤*.ics文件sed.该*.ics文件如下所示:

[...]

BEGIN:VEVENT
UID:0xfoo
SUMMARY:foo
DTSTART:20131212T090000
DTEND:20131212T100000
SEQUENCE:0
DTSTAMP:20131212T100000
LOCATION:foo
CATEGORIES:foo
DESCRIPTION:foo
CLASS:PUBLIC
END:VEVENT

[...]
Run Code Online (Sandbox Code Playgroud)

我想删除例如用UID或开始的行SEQUENCE,但仅限于它们之间 BEGIN:VEVENTEND:VEVENT

我尝试删除这些行:

sed '/^BEGIN:VEVENT/,/^END:VEVENT/ /^UID/d'
Run Code Online (Sandbox Code Playgroud)

但它只会返回一个错误,例如 unknown command '/'

如何删除这些行?

谢谢!

icalendar design-patterns sed

3
推荐指数
2
解决办法
5742
查看次数

标签 统计

sed ×2

awk ×1

design-patterns ×1

icalendar ×1

regex ×1