如何将两行的输出返回到一行?

问题描述 投票:0回答:1

所以我目前有一个名为 test2.txt 的文件,它显示了几个服务器的正常运行时间,如下所示。

 box1.com returned RC 0
 15:28pm  up 14 days 16:05

box2.com returned RC 0
 10:28:39 up 96 days

box3.com returned RC 0
 15:28:39 up 180 days

box4.com returned RC 0
 02:28am  up 89 days  4:49

box5.com returned RC 0
 02:28:40 up 19 days

理想情况下,我想删除输出中的多余内容 - 并让它返回一行,仅显示正常运行时间超过 90 天的服务器。

理想输出:

box2.com up 96 days 

box3.com up 180 days

我还没有任何运气,一直尝试使用 awk 但没有成功。

awk grep concatenation filtering
1个回答
0
投票

使用awk:

#!/bin/bash

filename="test2.txt"

# Using awk to parse the file and extract server name, status, and uptime
awk 'BEGIN { RS="\n\n" } {
    server_name = $1
    status = $6
    uptime = $7 " " $8

    printf "%s: %s %s\n", server_name, status, uptime
}' "$filename"

它输出:

box1.com: up 14 days
box2.com: up 96 days
box3.com: up 180 days
box4.com: up 89 days
box5.com: up 19 days

然后你必须添加90天测试。

Hth

© www.soinside.com 2019 - 2024. All rights reserved.