shell - 假设我的输入文件是表分隔的,我如何使用 AWK 获取类名和可执行时间

标签 shell awk

假设我的输入文件是表分隔的,如何获取类名和可执行时间?

 - class Apple.java executed by user ABC34 executable time 980.9 ms
 - class ABC.java executed by user ABC34  executable time is in sec 45.9 ss
 - class TAS.java executed by user ABC34  executable time 75.9 ms
 - class GW.java executed by user ABC34  executable time is in sec 0.9 ss
 - class MYClass.java executed by user ABC34  executable time  is in sec 7.9 ss
 - class Times.java executed by user ABC34  executable time  is in sec 9.9 ss
 - class Sunday.java executed by user ABC34  executable time  is in sec 85.9 ss
 - class Week.java executed by user ABC34  executable time  is in sec 1000.9 ss

我想要这样的输出

 - Apple.java 980.9 ms
 - ABC.java  45.9 ss
 - TAS.java  75.9 ms
 - GW.java  0.9 ss
 - MYClass.java 7.9 ss
 - Times.java  9.9 ss
 - Sunday.java 85.9 ss
 - Week.java  1000.9 ss

请查看我的代码。我无法出去

#!/bin/bash

LOGFILE=$1
SEARCH=$2

echo $SEARCH

if [ -f $LOGFILE ];
then

awk '/ABC34 / && /is in sec/ {print $2, $13, $14;}' $LOGFILE>Output.txt
awk '/ABC34 / {print $2, $8, $9;}' $LOGFILE>Output.csv

else
echo "No File Found"
fi

但是当我检查我的 Output.txt 为空时。非常感谢。

最佳答案

使用 awk 就可以了:

awk '{print $1,$3,$(NF-1),$NF}' your.file

NF 包含一行中的字段数。因此该命令打印 1.、3. 倒数第二个和最后一个字段。

输出:

- Apple.java 980.9 ms
- ABC.java 45.9 ss
- TAS.java 75.9 ms
- GW.java 0.9 ss
- MYClass.java 7.9 ss
- Times.java 9.9 ss
- Sunday.java 85.9 ss
- Week.java 1000.9 ss

关于shell - 假设我的输入文件是表分隔的,我如何使用 AWK 获取类名和可执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17857012/

相关文章:

regex - 仅当字符串尚不存在时才使用 sed 将字符串添加到行尾

linux - 日志文件中 2 个日期之间的 Bash Grep 行

linux - 给定端口号,如何使用 netstat 查找连接详细信息?

xcode - xcode 中的 Bash 脚本返回 Shell 脚本调用错误

linux - 以 CSV 形式归档的 ISO 日期格式,我需要将该 ISO 字段转换为 IST 并将其存储在同一个 csv 文件中

bash - bash 中有没有办法用变量的内容替换文本文件中的占位符?

Java - 我如何通过 JLabel 运行特定的 DOS 命令

linux - 在特定目录拆分大于 500kb 的文件

linux - 匹配并编写比较两个文件的模式?

awk - 为每个 n 列值创建新行,同时保持第 1 列值