Bash 第三次结肠出现后的修剪线

Bash 第三次结肠出现后的修剪线,bash,sed,Bash,Sed,我正在解析一个日志文件,并试图清理输出 这是一个示例输入行 2016-04-11 12:45:26 : TEXT TO REMOVE 这是我当前的代码,它删除了第一个冒号之后的所有内容 sed 's/:.*//' 哪个输出 2016-04-11 12 我想修改它,这样它就可以删除第三个冒号之后的所有内容(所以我最后只剩下日期和时间) 以下是我想要的示例输出: 2016-04-11 12:45:26 查找冒号周围的空格如何 sed 's/ : .*//' awk -F ' : ' '{pr

我正在解析一个日志文件,并试图清理输出

这是一个示例输入行

2016-04-11 12:45:26 : TEXT TO REMOVE
这是我当前的代码,它删除了第一个冒号之后的所有内容

sed 's/:.*//'
哪个输出

2016-04-11 12
我想修改它,这样它就可以删除第三个冒号之后的所有内容(所以我最后只剩下日期和时间)

以下是我想要的示例输出:

2016-04-11 12:45:26

查找冒号周围的空格如何

sed 's/ : .*//'
awk -F ' : ' '{print $1}'

查找冒号周围的空格如何

sed 's/ : .*//'
awk -F ' : ' '{print $1}'

这就是
cut
发明的目的:

$ cut -d':' -f1-3 file
2016-04-11 12:45:26

这就是
cut
发明的目的:

$ cut -d':' -f1-3 file
2016-04-11 12:45:26
您可以使用此sed:

str='2016-04-11 12:45:26 : TEXT TO REMOVE'
sed 's/ *:[^:]*$//' <<< "$str"
您可以使用此sed:

str='2016-04-11 12:45:26 : TEXT TO REMOVE'
sed 's/ *:[^:]*$//' <<< "$str"

严格地说,删除第三个
之后的所有内容相当于只打印前面的字符<代码>sed这样使用会更容易

尝试一下:

sed "s/^\([^:][^:]*:[^:][^:]*:[^:][^:]*\):.*$/\1/"
同样的原理只能用于打印
之前的日期时间:

sed "s/^\([0-9][0-9]*-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]\).*$/\1/g"

\(\)之间的字符可以在\1的替换部分重新使用

严格地说,删除第三个
之后的所有内容相当于只打印前面的字符<代码>sed这样使用会更容易

尝试一下:

sed "s/^\([^:][^:]*:[^:][^:]*:[^:][^:]*\):.*$/\1/"
同样的原理只能用于打印
之前的日期时间:

sed "s/^\([0-9][0-9]*-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]\).*$/\1/g"
\(\)之间的字符可以在\1的替换部分重新使用