通过 awk 命令编辑文本文件

通过 awk 命令编辑文本文件

我对该命令非常陌生,到目前为止,我尝试了一些东西,但每次都失败了。

我有一个文本文件(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

我想用这个文本文件做什么?让我解释一下!

  1. 首先,我想重新排列该文件日/月/年/时/分/秒格式。但与日期相关的所有其他数据必须根据日期再次重新排列。可以通过awk命令实现吗?
  2. 其次,我想排列文本文件以查看如下所示的输出(基本上我想用“;”字符更改空白行):
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

相关内容