Grep 特定列

Grep 特定列

我有以下输出:

Created                 LabelNum Size   Retention Hostname                Location Label           Plugin               Expires                 Server
----------------------- -------- ------ --------- ----------------------- -------- --------------- -------------------- ----------------------- -------------------------------
2017-03-22 01:43:29 IST 9        1.0 GB DW        vdp-dest.happycow.local Local    A-1490127173251 Windows VMware Image 2017-03-26 01:42:53 IST DD - data-domain.happycow.local

我想 grep 列下的内容Expires该列下的值会因客户端而异,因此这将是一个变量。

因此,无论有什么价值,我都希望看到输出。在这种情况下应该是:

Expires
-----------------------
2017-03-26 01:42:53 IST

答案1

看起来你有一个固定的列,然后它是:

cut -c121-143 file

编辑:

如果包含关键字“Expires”的列可能有所不同,则另一种方法是首先识别关键字的位置,然后从该位置回显并向前输入 23:

#! /bin/bash
# Syntax:
#   ./cut_expires < file
#
# read first line from stdin
read LINE
# Remove chars from start to 'Expires' inclusive
PREFIX=${LINE/*Expires/}
EXPIRES=Expires
# Calculate where 'Expires' start
START=$(( ${#LINE}-${#PREFIX}-${#EXPIRES} ))
echo $EXPIRES
while read LINE; do
    # echo from character pos $START and 23 characters
    echo ${LINE:$START:23}
done

相关内容