Namless Asked: 2018-01-09 02:50:10 +0800 CST2018-01-09 02:50:10 +0800 CST 2018-01-09 02:50:10 +0800 CST 如何使用 awk 删除列的一部分 772 我有这个 : 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如果可能的话,我想这样做。 awk date 7 个回答 Voted Best Answer jimmij 2018-01-09T03:05:10+08:002018-01-09T03:05:10+08:00 awk awk -F- '$0=$1' file 切 cut -d- -f1 file sed sed 's/-.*//' file perl perl -pe 's/-.*//' file RomanPerekhrest 2018-01-09T02:52:17+08:002018-01-09T02:52:17+08:00 只需awk: awk -F'-' '{ print $1 }' file -F'-'- 将-(破折号)视为字段分隔符 但在您的简单案例中,grep方法会更简单: grep -o '^[^-]*' file ilkkachu 2018-01-09T03:21:55+08:002018-01-09T03:21:55+08:00 如果输入只包含时间戳,那么很容易将破折号设置为字段分隔符并且只打印第一个字段: $ 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 Jumbly 2018-01-09T06:43:11+08:002018-01-09T06:43:11+08:00 awk -F- ' { print $1 } ' | sort | uniq -c 也会为你做总结: 3 2018:01:02 2 2018:01:03 Praveen Kumar BS 2018-01-09T08:23:47+08:002018-01-09T08:23:47+08:00 我通过下面的 awk 子字符串方法实现了同样的效果 awk '{print substr($1,1,10)}' filename 输出 2018:01:02 2018:01:02 2018:01:02 2018:01:03 2018:01:03 user276072 2019-04-07T03:47:48+08:002019-04-07T03:47:48+08:00 通过 gnu awk $ awk 'BEGIN{FS="[:-]"} {print $1":"$2":"$3 }' file 或者 $ awk 'BEGIN{FPAT="[0-9]+"}{print $1":"$2":"$3 }' file 可以将上面的日期分隔符打印输出更改为一种喜欢 $ awk 'BEGIN{FS="[:-]"}{print $1"/"$2"/"$3 }' file 2018/01/02 2018/01/02 2018/01/02 2018/01/03 2018/01/03 Praveen Kumar BS 2019-04-08T04:54:05+08:002019-04-08T04:54:05+08:00 在python中完成 #!/usr/bin/python import subprocess import re h=open('filename','r') for i in h: print i.split('-')[0].strip() 输出 2018:01:02 2018:01:02 2018:01:02 2018:01:03 2018:01:03
awk
切
sed
perl
只需
awk
:-F'-'
- 将-
(破折号)视为字段分隔符但在您的简单案例中,
grep
方法会更简单:如果输入只包含时间戳,那么很容易将破折号设置为字段分隔符并且只打印第一个字段:
但如果你还有其他东西,说
input2
包含那么这将删除该行的其余部分,对于其他处理,您可能也不想更改字段分隔符。但是您可以对第一个字段进行简单的替换并打印结果行:
也会为你做总结:
我通过下面的 awk 子字符串方法实现了同样的效果
输出
通过 gnu awk
或者
可以将上面的日期分隔符打印输出更改为一种喜欢
在python中完成
输出