我有一个包含一些数据的文件,如下例所示:
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.bak
。s/pat/replacement/
表示用 替换pat
。replacement
表示[^:]*: *
匹配最长的非:
字符字符串,后跟:
一个或多个空格。最终结果是它将删除第一个和后面的空格之前的所有内容:
。
这种方法的优点是可以与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