从文件中删除特定字符串

Nas*_*eer 5 command-line

我有一个包含一些数据的文件,如下例所示:

data1: it is my data
data2: some more data
data3: even some more data
Run Code Online (Sandbox Code Playgroud)

我想要的是另一个文件中的以下输出:

it is my data
some more data
even some more data
Run Code Online (Sandbox Code Playgroud)

请指导我怎么做!

ter*_*don 9

这应该有效:

sed -i .bak 's/[^:]*: *//' file
Run Code Online (Sandbox Code Playgroud)

说明:-i .bak会编辑到位的文件,并创建一个名为原始的备份filename.baks/pat/replacement/手段代替patreplacement[^:]*: *表示匹配最长的非:字符字符串,然后是:一个或多个空格。最终的结果是它将删除所有内容,直到第一个:和后面的空格。

这种方法的优点是可以使用data:orfoo:或其他方法,并且如果您:在同一行上有多个,也可以使用。例如,它可以处理这个:

data: a line that contains : a colon!
Run Code Online (Sandbox Code Playgroud)


Rad*_*anu 8

如果您使用,这非常简单awk

awk -F ': ' '{for (i=2; i<=NF; i++) print $i}' file_name > new_file_name
Run Code Online (Sandbox Code Playgroud)

每行在更多字段中使用': '作为分隔符分隔,并打印除第一个字段之外的所有内容。输出被重定向到new_file_name.

  • @Aditya 请注意,如果您的行可以包含多个`:`,这将不起作用。如果可能的话,请使用我下面的解决方案。 (3认同)