我有这个 :
2018:01:02-23:52:48
2018:01:02-23:52:48
2018:01:02-23:52:48
2018:01:03-09:26:20
2018:01:03-09:26:20
我想保留日期,但不保留小时,以便对每天的消息数量进行排序:
2018:01:02
2018:01:02
2018:01:02
2018:01:03
2018:01:03
如果可能的话我想这样做awk
。
答案1
awk
awk -F- '$0=$1' file
切
cut -d- -f1 file
sed
sed 's/-.*//' file
珀尔
perl -pe 's/-.*//' file
答案2
简单地与awk
:
awk -F'-' '{ print $1 }' file
-F'-'
--
将(破折号)视为字段分隔符
但在你的简单情况下,grep
方法会更简单:
grep -o '^[^-]*' file
答案3
如果输入仅有的包含时间戳,那么很容易将破折号设置为字段分隔符并仅打印第一个字段:
$ awk -F- '{print $1}' input
2018:01:02
2018:01:02
但如果里面还有其他东西,比如说input2
包含
2018:01:02-23:52:48 some data
2018:01:02-23:52:48 something else
那么这将删除该行的其余部分,并且对于其他处理,您可能也不想更改字段分隔符。但是您可以对第一个字段进行简单的替换并打印结果行:
$ awk '{sub(/-.*/, "", $1)} 1' input2
2018:01:02 some data
2018:01:02 something else
答案4
我通过下面的 awk 子字符串方法实现了相同的效果
awk '{print substr($1,1,10)}' filename
输出
2018:01:02
2018:01:02
2018:01:02
2018:01:03
2018:01:03