我需要在Linux(RHEL 4/5)和Solaris(Solaris 10)系统上使用mount
提取NFS挂载信息。由于这是SSH命令的一部分,所以需要在一行中进行提取。不幸的是,Linux和Solaris将挂载点显示在不同的行的不同位置:
Linux:
10.0.0.1:/remote/export on /local/mountpoint otherstuff
太阳OS:
/local/mountpoint on 10.0.0.1:/remote/export otherstuff
我希望获得以下以空格分隔的输出。
10.0.0.1 /remote/export /local/mountpoint
我已经成功使用Solaris 10的sed
单独完成了这个任务,但我需要一个命令来同时返回相同的输出。
Linux sed
:
sed 's/\([^:]*\):\([^ ]*\)[^\/]*\([^ ]*\) .*/\1 \2 \3/'
Solaris的sed命令:
sed 's/\([^ ]*\) *on *\([^:]*\):\([^ ]*\) .*/\2 \3 \1/'
解决方案:
我根据被接受的答案进行了修改,使其不仅适用于IP地址,还适用于DNS名称:awk -F'[: ]' '{if(/^\//)print $3,$4,$1;else print $1,$2,$4}'
sed
而不是(比如)awk
或cut
? - Philip Kendall