Bash删除每行第一个空白之前的所有内容

时间:2016-09-28 04:05:41

标签: bash

我的日志文件都以时间戳开头,然后是日志级别,然后是消息,我想要一个删除时间戳的脚本。

也就是说,我想要一个文件的每一行都会转向的脚本:

21:22:34.571 DEBUG - some message

DEBUG - some message

我没有太多使用bash所以任何建议都会受到赞赏。

3 个答案:

答案 0 :(得分:2)

您可以尝试sedcut,具体取决于输入数据:

sed -e 's/^[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}.[0-9]\{3\}//' <data_file_name>


cut -c 13- <data_file_name>

答案 1 :(得分:1)

如果你可以使用awk:

O

否则,使用shell(非常慢):

awk '$1="";1' data_file_name

答案 2 :(得分:0)

通过简单地提取空格后的所有内容

,也可以使用

grep

$ cat ip.txt 
21:22:34.571 DEBUG - some message
21:23:34.571 DEBUG - some other message

这将留下前导空白

$ grep -o ' .*' ip.txt 
 DEBUG - some message
 DEBUG - some other message

这不会

$ grep -oP ' \K.*' ip.txt 
DEBUG - some message
DEBUG - some other message