linux - 使用文件中的数据将日期和时间放在每一行中
问题描述
有人可以帮我输出以下内容吗:
前:
Thu May 27|14:23:17.068|A|0002|MSU Received Last Min|18858
Thu May 27|14:24:17.069|A|0002|MSU Received Last Min|19216
Thu May 27|14:25:17.070|A|0002|MSU Received Last Min|19702
Thu May 27|14:26:17.072|A|0002|MSU Received Last Min|20190
Thu May 27|14:27:17.073|A|0002|MSU Received Last Min|19871
后:
2021-05-27 14:23:17|A|0002|MSU Received Last Min|18858
2021-05-27 14:24:17|A|0002|MSU Received Last Min|19216
2021-05-27 14:25:17|A|0002|MSU Received Last Min|19702
2021-05-27 14:26:17|A|0002|MSU Received Last Min|20190
2021-05-27 14:27:17|A|0002|MSU Received Last Min|19871
解决方案
这是一种逐行处理的方法(假设输入在 input.txt 文件中):
cat input.txt | while read line; do dateField=$(echo $line | cut -d '|' -f 1); fields=$(echo $line | cut -d '|' -f 2-); echo -n `date -d "$dateField" +'%Y-%m-%d'`' '; echo $fields; done
这会产生预期的结果。
解释
cat input.txt
:设置输入;while read line; do
:循环线到线;dateField=$(echo $line | cut -d '|' -f 1)
:将第一个字段(日期)分配给 dateField 变量;fields=$(echo $line | cut -d '|' -f 2-)
:将其余字段分配给 fields 变量;echo -n `date -d "$dateField" +'%Y-%m-%d'`' '
:按照您的指示格式化日期,没有换行符(echo -n ...
),并在末尾连接空格;echo $fields
:打印其余字段。
推荐阅读
- elasticsearch-opendistro - OpenDistro 弹性搜索中的数据/读取/滚动/清除权限有什么用?
- blockchain - 每笔交易在 NEAR 中是否有自己的 gas 价格?
- r - 在 R 中使用 ggplot2 拟合带有威布尔曲线的散点图
- java - 上下拖动片段
- javascript - 在这种情况下有没有办法避免全局变量?
- javascript - 如何在另一个数组的两个关键字之间制作一个项目数组?
- java - 如何在 OpenVMS 中运行脚本?
- c# - c# with Bitbucket.org 错误:解析值时遇到意外字符:<。路径 '',第 0 行,第 0 位置
- python - ModuleNotFoundError:没有名为“webbrowser”的模块 - Anaconda - Jupyter Notebook - MacOS
- sql - 如何在sql查询oracle中获取两个月之间的年份以及月份和日期