2014-01-07 2 views
3

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

Linux sed:

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

Solaris sed:

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

Решение:

Я приспособил accepted answer также работать с именами DNS и не только IP-адреса:

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

Почему это с 'sed', а не с (скажем) 'awk' или' cut'? –

ответ

3

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 
+0

Это не работает с «awk» Solaris. Я получаю «awk: синтаксическая ошибка около строки 1». Я пытаюсь понять, как awk должен выглядеть на Solaris. В Linux он работает для меня. –

+1

@FlorianFeldhaus у вас есть 'nawk' на вашей Solaris? – Kent

+0

Yepp, с 'nawk' он работает на Solaris :-) –

0

некоторые shoter версия решения 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 
Смежные вопросы