当前位置: 首页 > 面试题库 >

如何从匹配行之后删除文件中的所有行?

茅桐
2023-03-14
问题内容

我有一个由几行文本组成的文件:

The first line
The second line
The third line
The fourth line

我有一个字符串,其中之一是: The second line

我要删除字符串,并在文件中后,所有行,因此它会删除The third line,并The fourth line在除了字符串。该文件将变为:

The first line

我已经在Google上搜索了一个解决方案,似乎应该使用sed。就像是:

sed 'linenum,$d' file

但是如何找到字符串的行号?或者,我还应该怎么做?


问题答案:

如果您不想打印匹配的行(或以下任何行):

sed -n '/The second line/q;p' inputfile

这表示“当您到达与模式退出匹配的行时,否则打印每行”。该-n选项可防止隐式打印,并且p需要使用该命令显式打印行。

要么

sed '/The second line/,$d' inputfile

这表示“从输出中删除所有行,从匹配的行开始,一直到文件的末尾”。

但是第一个更快。但是,它将完全退出处理,因此,如果您有多个文件作为参数,则第一个匹配文件之后的文件将不被处理。在这种情况下,删除形式更好。

如果确实要打印匹配的行,但不打印以下任何行:

sed '/The second line/q' inputfile

这表示“打印所有行并在达到匹配的行时退出”(-n不使用该选项(无隐式打印))。

有关其他信息,请参见man sed。



 类似资料:
  • 我使用的是,我希望删除所有出现的特定元素。 它只删除了第一次出现的情况。但是我希望在我希望list仅用值“second”省略。我通过谷歌搜索发现,可以通过创建新列表并调用来实现。但是,是否有可能在不创建新列表的情况下删除所有事件,或者是否有任何可用的API来实现它?

  • 我一直在使用pandas导入CSV,但每次尝试使用它时,我都会得到一个随机的额外行,这会导致代码中的错误。我如何完全抹去这一行? 我用来导入它的代码是:import itertools import copy import networkx as nx import pandas as pd import Matplotlib.pyplot as plt import csv 我的表是一个简单的I

  • 我有大量数据,需要清理。B列为关键列;如果B列中有空值,则可以删除该行的其余部分。 我在B列上排序,所有的空值都在表的底部。在C-BZ列中有数据,但在B中没有。我想自动识别B中最后一个非空值(假设它是单元格B3841),然后删除工作表底部的3842行。我的数据集每天都在变化。 下面的代码对B列进行排序,然后删除所有完全空的行。我还想删除在B列中为null但在C或D或任何其他行中可能有数据的行。

  • 问题内容: 我有以下要在node.js中操作的文本文件(“ test.txt”): 我想删除第一行,以使其成为第一行。我怎样才能做到这一点? 问题答案:

  • 我有一个包含“@@@1”的序列的数据帧。我想删除包含此模式的行。 我写了这样的匹配代码: 如果找到匹配项,如何删除该行?

  • 本文向大家介绍从PHP中的文件中删除最后一行,包括了从PHP中的文件中删除最后一行的使用技巧和注意事项,需要的朋友参考一下 从文件中删除最后一行是一个简单的过程,只需几行代码即可完成。 此脚本中方法的局限性在于,如果文件很大,则将整个文件传递到数组中将占用大量内存,从而有可能导致服务器崩溃。最好的方法不是执行此操作,而是从文件末尾开始直到找到第一个换行符为止。以下脚本将一次咬掉50个字符,直到找到