awk определенный столбец с неожиданным разрывом строки

Посмотрите что ответ на связанный вопрос: https://serverfault.com/a/382515/67675

1
18.05.2013, 10:36
4 ответа

Если Вы передаете по каналу df в awk, канал df -P вместо этого. Это разработано, чтобы быть легко parsable, и в особенности не повреждает строки. Не забудьте пропускать строку заголовка (NR >= 2).

Если необходимо проанализировать некоторый существующий вывод со странными разрывами строки, можно сказать строку продолжения, потому что он запускается с пространства.

awk '
  NR==1 {next}
  /^ / {print $1}
  !/^ / {print $2}
'

Остерегайтесь однако, что существуют варианты Unix (OSX, по крайней мере — , и я не был бы удивлен, было ли это единственное, где это происходит на практике), где обозначение файловой системы может содержать пробелы, который делает любой основанный на столбце парсинг проблематичным (к сожалению, df -P не использует вкладки).

6
27.01.2020, 23:15

У меня нет необычно длинного имени FS, но можно попробовать это:

df |grep "%" |grep -v Use |awk {'print $(NF-4)'}

Это предполагает, что Вам не нужна строка заголовка с 1K-блоками.

0
27.01.2020, 23:15

Используя GNU df, вы можете использовать флаг -P и передать его в awk, как было предложено в других ответах. Пример для наглядности и простоты: для случая, когда вам нужно количество доступных килобайт (df -k), отлично работает следующее:

df -kP | awk 'NR>1 {print $4}'

Это указывает awk на печать 4-го столбца для всех строк после первой (т.е. не строки заголовка).

В любом случае, основной причиной добавления этого ответа является наблюдение, что на Solaris (проверено на Solaris 9 и 10) этот флаг на самом деле не нужен, несмотря на аналогичные разрывы строк в форматировании вывода; следующее работает в этом случае:

df -k | awk 'NR>1 {print $4}'
0
27.01.2020, 23:15
df -Pk|tail -n +2|column -t | awk '{print $4}'
  • df -Pk: перечислит файловую систему.
  • tail -n +2: удалит заголовок.
  • column -t: используется для форматирования вывода.
  • awk '{print $4}': распечатает содержимое четвёртого столбца.
0
27.01.2020, 23:15

Теги

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