我有一个包含一些数据的文件,如下例所示:
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)
请指导我怎么做!
这应该有效:
sed -i .bak 's/[^:]*: *//' file
Run Code Online (Sandbox Code Playgroud)
说明:该-i .bak会编辑到位的文件,并创建一个名为原始的备份filename.bak。s/pat/replacement/手段代替pat用replacement。[^:]*: *表示匹配最长的非:字符字符串,然后是:一个或多个空格。最终的结果是它将删除所有内容,直到第一个:和后面的空格。
这种方法的优点是可以使用data:orfoo:或其他方法,并且如果您:在同一行上有多个,也可以使用。例如,它可以处理这个:
data: a line that contains : a colon!
Run Code Online (Sandbox Code Playgroud)
如果您使用,这非常简单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.