【发布时间】:2015-05-28 23:52:45
【问题描述】:
在它起作用之前删除匹配和两行:
sed -i.bak -e '/match/,-2d' someCommonName.txt
在匹配成功后删除两行:
sed -i.bak -e '/match/,+2d' someCommonName.txt
但是删除匹配,它之后的两行和它之前的两行不起作用?
sed -i.bak -e '/match/-2,+2d' someCommonName.txt
sed: -e expression #1 unknown command: `-'
这是为什么呢?
【问题讨论】:
-
那个
../somedir/*/someCommonName.txt太危险了? -
第一个对我不起作用:
seq 10 | sed -e '/5/,-2d',例如,返回“sed: -e expression #1, char 5: unexpected `,'”错误。事实上,我怀疑第一个命令对你有用。见Delete range of lines above pattern with sed (or awk)。 -
不危险,只是更难读懂,去重点
-
您提出了一个问题,1 小时后选择了一个不包含有效解决方案的答案。只是一个想法-也许如果您将问题留待更长时间,您就会得到一个可行的解决方案。 FWIW 接受的答案中建议的方法不适用于彼此相距 2 行的 2 条匹配线的边缘情况。
-
现在可能为时已晚,因为每个人都会看最近的帖子。你可以给它一天左右的时间看看,但你会知道你的下一个问题。您还应该发布一些具体的、可测试的、示例输入和预期输出,其中包括要处理的硬/非显而易见的案例,例如如果您在示例输入文件中有
match仅由 1 行分隔 - 预期的输出是什么?