Как я могу использовать cut и sed в awk? - PullRequest
0 голосов
/ 06 марта 2020

Прежде всего, я новичок здесь, и я хочу знать, как я могу использовать cut и sed in awk любого метода для редактирования моего теста данные для хранения этих данных в массиве

Это мой пример данных:

isdat    pts/0        10.80.24.3       Fri Sep 20 10:20:30 2019 - Fri Sep 20 11:55:51 2019  (01:35)

обычно я могу выбрать use_time с помощью awk '{print $15}' это будет похоже на
вывод: (01:35)

и я урежу на cut -d ':' -f1 | sed -e 's/(/ /' в течение часа, а это в минуту cut -d ':' -f2 | sed -e 's/)/ /'

Но в awk нельзя использовать cut и sed как я могу решить эту проблему

Ответы [ 2 ]

1 голос
/ 06 марта 2020

Вы их не используете. Awk прекрасно справляется с этим самостоятельно:

$ awk '
$2~/^pts/ {                     # the grep part
    split($15,a,/:/)            # split $15 by :
    for(i in a)                 # process all parts (2)
        gsub(/[()]/,"",a[i])    # remove parentheses
    print a[1],a[2]             # output both parts
}' file

Вывод:

01 35
0 голосов
/ 06 марта 2020

У вас есть хороший ответ от Джеймса. Другой небольшой поворот с использованием последнего поля (например, $NF) может быть:

awk '{sub(/:/," ",$NF); print substr($NF,2,length($NF)-2)}' file

, где вы просто заменяете ':' на ' ', а затем берете подстроку между (..).

Результат

Передача вашего ввода в приведенное выше выражение (и удаление file) приводит к:

01 35

Всегда есть несколько способов skin-the-cat с awk.

Согласно комментарию, если вы хотите ограничить вывод только тем, когда второе поле начинается с pts, то вы можете сделать:

awk '$2~/^pts/{sub(/:/," ",$NF); print substr($NF,2,length($NF)-2)}' file

Нет волхвов c.

...