从文件中删除特定字符串

从文件中删除特定字符串

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

data1: it is my data
data2: some more data
data3: even some more data

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

it is my data
some more data
even some more data

请指导我该怎么做!

答案1

这应该有效:

sed -i .bak 's/[^:]*: *//' file

解释:-i .bak在原地编辑文件,并创建原始文件的备份,名为filename.baks/pat/replacement/表示用 替换patreplacement表示[^:]*: *匹配最长的非:字符字符串,后跟:一个或多个空格。最终结果是它将删除第一个和后面的空格之前的所有内容:

这种方法的优点是可以与data:foo:等一起使用,并且如果:同一行中有多个,它也可以工作。例如,它可以处理这个:

data: a line that contains : a colon!

答案2

如果你使用的话,这非常简单awk

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

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

答案3

这看起来像是一个工作cut

cut -d: -f2- file > new_file

答案4

在编辑器中打开文件vim如下:

vi <filename>

然后按下esc,然后执行以下操作:

:%s/data.: //gc

这里%s用于字符串替换

/是命令和字符串之间的分隔符

data.:是第一个字符串,用于替换之前查找和确认.任何单个字符 gc

相关内容