【问题标题】:How to use awk for 2 columns and save it into a variable as one element?如何将 awk 用于 2 列并将其作为一个元素保存到变量中?
【发布时间】:2018-08-22 21:55:30
【问题描述】:

我有一个看起来像这样的文件

.../proj_1/file1.txt 8 2018-03-14 07:46:01
.../proj_1/file3.txt 3 2018-03-14 07:47:01
.../proj_1/file2.txt 10 2018-03-14 07:45:01
.../file1.txt 2 2018-03-14 07:50:01

我想提取 3. 和 4. 列中的日期和时间并将其保存到变量中。 (dir_path是目录名,source_file是我上面描述的文件)

variable=$(grep "$dir_path/.*" source_file | grep -v "$dir_path/.*/" | awk '/[0-9]/{print ($3 $4)}')

我想要的输出是

2018-03-14 07:46:00
2018-03-14 07:47:00
2018-03-14 07:45:01

但是使用这段代码,输出看起来像这样

2018-03-1407:46:00
2018-03-1407:47:00
2018-03-1407:45:01

如何在日期和时间之间添加空格?甚至可能吗?如果我在 awk 表达式中添加一个空格,则时间和日期将保存在单独的元素中,这不是我想要的。

感谢您的帮助!

【问题讨论】:

  • $3$4之间加逗号,即:awk '/[0-9]/{print ($3, $4)}'

标签: awk grep


【解决方案1】:

下面的呢?

awk '/[0-9]/{print ($3" "$4)}'

为我工作:

awk '/[0-9]/{print ($3" "$4)}' file1.txt

2018-03-14 07:46:01
2018-03-14 07:47:01
2018-03-14 07:45:01
2018-03-14 07:50:01

有用的链接:StackOverflow case: AWK to print field $2 first, then field $1

【讨论】:

  • 哇,这在终端中有效,但在脚本中无效...当我遍历我的变量时,输出将时间和日期分隔到变量的不同元素中
  • 很可能是由于引号(")尝试使用转义字符
  • 您也可以使用 -F 选项指定分隔符,如下链接所述:stackoverflow.com/questions/15597666/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多