【发布时间】:2019-12-16 12:48:53
【问题描述】:
我想取 file1 的 col1,如果 file2 的 col1 匹配,则更新最后一列中的“更新日期”。如果没有匹配项,我想将 file1 的整行附加到 file2 并将“更新日期”值也附加到该行。
我目前正在使用awk 'NR==FNR{c[$1]++;next};c[$1] > 0' file2 file1 进行基线比较,但是如果匹配,则会错误地打印整行,而且我也无法弄清楚如何添加另一个条件来更新日期列。我也在尝试在 shell 脚本中执行此操作。
文件 1
userName | cpu% | command | date created
user1, 101.6, plasma-de+, Thu Aug 8 09:30:17 MDT 2019
user2, 100.0, plasma-de+, Thu Aug 8 09:30:17 MDT 2019
user3, 102.0, plasma-de+, Thu Aug 8 09:30:17 MDT 2019
文件 2
userName | cpu% | command | date created | date updated
user1, 101.6, plasma-de+, Mon Aug 5 06:35:39 MDT 2019, Mon Aug 5 06:35:39 MDT 2019
user2, 100.0, plasma-de+, Mon Aug 5 06:35:39 MDT 2019, Mon Aug 5 06:35:39 MDT 2019
命令运行后的文件 2
userName | cpu% | command | date created | date updated
user1, 101.6, plasma-de+, Mon Aug 5 06:35:39 MDT 2019, Thu Aug 8 09:30:17 MDT 2019
user2, 100.0, plasma-de+, Mon Aug 5 06:35:39 MDT 2019, Thu Aug 8 09:30:17 MDT 2019
user3, 102.0, plasma-de+, Thu Aug 8 09:30:17 MDT 2019, Thu Aug 8 09:30:17 MDT 2019
【问题讨论】:
-
您的列是如何分隔的?有标签吗?
-
@Shawn 只是空格。该信息最初来自调用“top”
-
那一定会让处理时间戳字符串变得有趣。当您不添加一列而是添加 6 列时,它肯定会使答案复杂化。
-
@Shawn 我该如何解决?顶部吐出前 3 列,然后我手动附加创建日期的值。
-
@Shawn 啊,这很容易。更新了我的帖子,列现在用逗号作为分隔符。
标签: awk text-processing