awk сопоставляет последнюю запись и печатает

У меня была точно такая же проблема. Мои разрешения были правильными в /etc/ssh, и эта проблема возникла из-за дублирующегося IP-адреса в сети. Как только это было исправлено, проблема исчезла.

-1
30.08.2020, 01:02
3 ответа

Для предоставленного вами образца ввода, где последнее поле равно 1 чатрактеру:

$ awk '$NF~/[YZ]/{print substr($0,14,33) $NF}' file
                34567890123456789Y
                56789012345678901Z

Для реальной строки данных, которую вы предоставили позже, где последнее поле состоит из нескольких символов и не делается никаких предположений о том, где Y или Z могут находиться в этом последнем поле:

$ awk 'match($0,/[YZ][^[:space:]]*$/){print substr($0,14,33) substr($0,RSTART,1)}' file
                34567890123456789Y
                56789012345678901Z

или если Y или Z всегда последний символ в строке:

$ awk '/[YZ]$/{print substr($0,14,33) substr($0,length($0))}' file
                34567890123456789Y
                56789012345678901Z
1
18.03.2021, 23:09

это почти правильно, но отсутствует Y или Z после новой записи

gawk "$NF~/Y|Z/{print substr($0,14,33)}" fileinp > fileout

Результаты:

        34567890123456789
        56789012345678901

Ожидаемые результаты:

        34567890123456789Y
        56789012345678901Z
0
18.03.2021, 23:09

я попробую это:

gawk "$NF~/Y|Z/{print substr($0,14,33) substr($0,194,1)}" fileinp > fileout

но я получаю эти пустые символы перед последними символами

    34567890123456789 Y
    56789012345678901 Z

Я также пробовал это, и это работает, но на самом деле это не последние символы:

gawk "$NF~/Y|Z/{print substr($0,14,33) substr($NF,7,1)}" fileinp > fileout

    34567890123456789Y
    56789012345678901Z
0
18.03.2021, 23:09

Теги

Похожие вопросы