Как очистить / отформатировать вывод awk?

#macos #curl #awk #grep

#macos #curl #awk #grep

Вопрос:

Попытка получить только последний номер версии, который всегда будет находиться за «misc» из ftp://ftp.adobe.com/pub/adobe/reader/mac/AcrobatDC /

Возможно, я смогу исправить это, используя «вырезать», но это может не соответствовать следующей последней версии, если время равно x: xx.

Текущий код:

 latestver=`/usr/bin/curl -s -L "ftp://ftp.adobe.com/pub/adobe/reader/mac/AcrobatDC/" | /usr/bin/awk '/misc/ {print a}{a=$0}'`
    echo "Latest Version is: $latestver"
  

Вывод:

 Latest Version is: drwxrwxr-x    2 ftp      ftp           142 Apr 01 11:13 1901020099

  

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

 Latest Version is: 1901020099
  

Ответ №1:

Это должно сделать:

 latestver=$(curl -s -L "ftp://ftp.adobe.com/pub/adobe/reader/mac/AcrobatDC/" | awk '$NF=="misc" {print f} {f=$NF}')
echo "$latestver"
1901020099
  

Как это работает:

  • $NF=="misc" проверяет, является ли последнее поле misc
  • {print f} затем печатает то, что находится в переменной f
  • {f=$NF} устанавливает f значение в последнее поле.

Поскольку f значение устанавливается после теста, оно всегда будет иметь предыдущее значение, которое вы ищете.

Комментарии:

1. Спасибо! Это работает отлично, и спасибо за объяснение.

Ответ №2:

Не могли бы вы попробовать следующее (не проверялось, поскольку curl не может быть протестирован).

 latestver=$(/usr/bin/curl -s -L "ftp://ftp.adobe.com/pub/adobe/reader/mac/AcrobatDC/" | /usr/bin/awk '/misc/{print $NF}')
echo "Latest Version is: $ltestver"
  

Комментарии:

1. Здравствуйте, спасибо за ответ, однако вывод был — «Последняя версия: разное»

2. @DankDalf, хорошо, это было написано в соответствии с вашей попыткой, не могли бы вы опубликовать вывод своей команды curl и сообщить мне об этом? ОТРЕДАКТИРУЙТЕ свой пост, пожалуйста.

Ответ №3:

Вы можете использовать следующее :

 $ latestver=$( wget -qO- ftp://ftp.adobe.com/pub/adobe/reader/mac/AcrobatDC/ | grep 'pub/adobe/reader/mac/AcrobatDC' | sed 's/.*">(.*)/<.*/1/g' | tail -2 | head -1 )
  

Комментарии:

1. Обмен одного вызова Awk на извилистый лабиринт grep sed tail head вряд ли является улучшением.

2. @tripleee, напишите ответ. Всегда есть возможности для улучшения.