Awk或类似命令,以获取最后一列并在Bash中对其执行某些操作

Awk或类似命令,以获取最后一列并在Bash中对其执行某些操作,bash,awk,grep,Bash,Awk,Grep,我正在编写一个脚本来获取几百台服务器上的最后更新/补丁日期。由于各种原因,我缺少另一个工具,所以我决定写一个脚本。目前,我正在使用以下命令: sudo yum history | grep [0-9] | grep -E 'Update|Install|U|I' | awk 'NR==1' 这给了我第一行的动作。但它只给了我第一行,我曾想过抓住前5行,但这可能并不适用于所有情况 sudo yum history | grep [0-9] | grep -E 'Update|Install|U|

我正在编写一个脚本来获取几百台服务器上的最后更新/补丁日期。由于各种原因,我缺少另一个工具,所以我决定写一个脚本。目前,我正在使用以下命令:

sudo yum history | grep [0-9] | grep -E 'Update|Install|U|I' | awk 'NR==1'
这给了我第一行的动作。但它只给了我第一行,我曾想过抓住前5行,但这可能并不适用于所有情况

sudo yum history | grep [0-9] | grep -E 'Update|Install|U|I' | awk 'NR>=1&&NR<=5'

sudo-yum-history | grep[0-9]| grep-E'Update | Install | U | I'| awk'NR>=1&&NR使用正则表达式,匹配最后一列中的数字。要打印大于等于20次更改的所有历史记录,请执行以下操作:

sudo yum history | \
    perl -ne '/\| *(\d+)[^\|]*$/ and $1>=20 and print($_)'
Of-如果您只需要匹配历史记录的时间戳:

sudo yum history | \
    perl -ne '
        @col=split(/\|/);
        $col[4]=~/^ *(\d+)/ and $1>=20 and print($col[2],"\n")'
使用awk:

sudo yum history | awk -F ' *\\| *' '$4 ~ /\<(Install|Update|U|I)\>/ && $5 > 20'
sudo-yum-history|awk-F'*\\\\\*''$4~/\/&&$5>20'

要获取前5行,您还可以使用
头-5
$NF
awk
中的最后一列,
$(NF-1)
是倒数第二列。这非常有效。非常感谢你。我接受了你的第一个建议,出于理智考虑,因为这会出现在一个报告中,所以我将其传递给了第一条记录的awk命令:awk'NR==1'
sudo yum history | awk -F ' *\\| *' '$4 ~ /\<(Install|Update|U|I)\>/ && $5 > 20'