Как извлечь информацию 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