Выход AWK для bash Array - PullRequest
       4

Выход AWK для bash Array

6 голосов
/ 30 октября 2010

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

df -h | awk '{ print  $5" "$6 }'

дает процентное соотношение, используемое в файловых системах на моей системе, выглядит так:

1% /dev
1% /dev/shm
1% /var/run
0% /var/lock
22% /boot
22% /home
22% /home/steve

Затем я хотел бы поместить каждую из этих строк в массив массива bash = $ (df -h | awk '{print $ 5 $ 6}')

Однако, когда я печатаюиз массива я получаю следующее:

5%
/
1%
/dev
1%
/dev/shm
1%
/var/run
0%
/var/lock
22%
/boot
22%
/home
22%
/home/steve

Bash формирует массив на основе пробелов, а не разрывов строк, как я могу это исправить?

Ответы [ 3 ]

9 голосов
/ 30 октября 2010

Необходимо сбросить переменную IFS (разделитель, используемый для массивов).

OIFS=$IFS #save original
IFS=','
df -h | awk '{ print $5" "$6"," }'
1 голос
/ 30 октября 2010

Вы можете сделать это в Bash без awk.

array=()
while read -a line; do
    array+=("${line[4]} ${line[5]}")
done < <(df -h)
0 голосов
/ 30 октября 2010

Вы можете использовать это:

eval array=( $(df -h | awk '{ printf("\"%s %s\" ", $5, $6) }') )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...