我对该命令非常陌生,到目前为止,我尝试了一些东西,但每次都失败了。
我有一个文本文件(MWE),如下所示:
26 6 2020 09:06:23.300 277.430 50.131 20654.698008
26 6 2020 09:05:23.322 277.153 50.000 20493.667799
我想用这个文本文件做什么?让我解释一下!
- 首先,我想重新排列该文件日/月/年/时/分/秒格式。但与日期相关的所有其他数据必须根据日期再次重新排列。可以通过
awk
命令实现吗? - 其次,我想排列文本文件以查看如下所示的输出(基本上我想用“;”字符更改空白行):
26;6;2020;09;05;23;277.153;50.000;20493.667799
26;6;2020;09;06;23;277.430;50.131;20654.698008
从上面也可以看出,时间分隔符已从“:”更改为“;”和。定时直接删除。现在我正在通过 MS Excel 删除瞬间(只需复制+粘贴和编辑)。如果还有更短的方法,我很乐意学习!
提前致谢!
此致,
答案1
您的问题仍然不清楚,但听起来这可能就是您想要做的:
$ awk -F'[[:space:]]+|:' -v OFS=';' '{sub(/\..*/,"",$6); print}' file |
sort -nt';' -k3,3 -k2,2 -k1,1 -k4,6
26;6;2020;09;05;23;277.153;50.000;20493.667799
26;6;2020;09;06;23;277.430;50.131;20654.698008
答案2
这是使用 awk 更改分隔符的习惯用法:
awk -F 'input_field_separator' -v OFS='output_field_separator' '{$1=$1; print}' file
该$1=$1
位强制 awk 使用 OFS 重写$0
。
这里,输入字段分隔符是空格或冒号
awk -F '[[:blank:]]+|:' -v OFS=';' '{$1=$1; print}' file