【发布时间】:2022-12-18 00:30:52
【问题描述】:
我有一个包含这个的文本文件:-
# Comment
# Comment
# Comment
property1
# Comment
# Comment
property2
我想使用 unix 命令(awk/sed 等)来搜索具有 property2 的模式,然后删除它之前的所有 cmet。因此,操作后的输出应该是:-
# Comment
# Comment
# Comment
property1
这是我尝试过的(使用 awk 命令):-
awk -v pat='^property2' -v comment='^#' '$1~pat{p=NR} p && NR>=p-3{del=($1~comment)} del{next} 1' test.txt
基本上,我尝试使用的逻辑是:-
- 搜索属性 2
- 然后循环之前的 3 行
- 搜索是否为评论(#开头)
- 删除那些行(包括搜索到的模式和上面的 cmets)。
有人可以帮助我实现这一目标吗?谢谢。
【问题讨论】:
-
请阅读how-do-i-find-the-text-that-matches-a-pattern,然后阅读edit你的问题,用你的意思替换
pattern。您的示例看起来应该匹配一个字符串,但您的代码正在尝试匹配一个正则表达式。 -
您的描述与您的示例不准确——请澄清。