Как извлечь информацию NFS из монтирования на Linux и Solaris?

Мне нужно извлечь информацию о монтировании NFS, используя mount в системах Linux (RHEL 4/5) и Solaris (Solaris 10). Поскольку это часть команды SSH, извлечение должно происходить в одну строку. К сожалению, Linux и Solaris отображают точку монтирования в разных частях строки:

Linux:

10.0.0.1:/remote/export on /local/mountpoint otherstuff

Solaris:

/local/mountpoint on 10.0.0.1:/remote/export otherstuff

Я хотел бы получить следующий разделенный пробелом вывод

10.0.0.1 /remote/export /local/mountpoint

Мне удалось сделать это отдельно с sed (Солярис 10 sed), но мне нужна одна команда для получения одинакового вывода для обоих.

Linux sed:

sed 's/\([^:]*\):\([^ ]*\)[^\/]*\([^ ]*\) .*/\1 \2 \3/'

Solaris sed:

sed 's/\([^ ]*\) *on *\([^:]*\):\([^ ]*\) .*/\2 \3 \1/'

Решение:

Я адаптировал принятый ответ также для работы с DNS-именами, а не только с IP-адресами:

awk -F'[: ]' '{if(/^\//)print $3,$4,$1;else print $1,$2,$4}'

2 ответа

Решение

awk может помочь вам:

 awk -F'[: ]' '{if(/^[0-9]/)print $1,$2,$4;else print $3,$4,$1}' 

увидеть этот тест:

kent$  cat f
10.0.0.1:/remote/export on /local/mountpoint otherstuff
/local/mountpoint on 10.0.0.1:/remote/export otherstuff

kent$  awk -F'[: ]' '{if(/^[0-9]/)print $1,$2,$4;else print $3,$4,$1}' f
10.0.0.1 /remote/export /local/mountpoint
10.0.0.1 /remote/export /local/mountpoint

Небольшая версия решения Kents

awk -F'[: ]' '{print /^[0-9]/?$1" "$2" "$4:$3" "$4" "$1}' file
10.0.0.1 /remote/export /local/mountpoint
10.0.0.1 /remote/export /local/mountpoint
Другие вопросы по тегам