Управляйте выходным сигналом с помощью sed

У меня есть вопрос о седе.

Выход:

Filesystem              avail
rpool/ROOT/s10_u11_201704 244719726

Требуется информация:

s10_u11_201704

Я старался:

df -b / | sed '1d;s/.*\/\(*\ \)\ .*/\1/g'

\(*\ \) не работает.

2 ответа

Решение

С помощью awk:

df -b / |awk -F'/' 'NR>1{split($NF,a," ");print a[1]}' 
s10_u11_201704

С помощью sed:

df -b / |sed -r '1d;s|(^.*)/([^ ]+).*|\2|g'
s10_u11_201704

Отказ от ответственности: df -b недоступен ни в одном из доступных мне дистрибутивов.

Короткий подход к awk:

df --output=source | awk -F'/' '{print $NF}'

  • --output=source (--output[=FIELD_LIST]) - использовать формат вывода, определенный FIELD_LIST

  • -F'/' - лечение / в качестве разделителя полей

  • $NF - последнее значение поля

Другие вопросы по тегам