2014-01-07 66 views
3

我需要在Linux(RHEL 4/5)和Solaris(Solaris 10)系統上使用mount來提取NFS裝載信息。由於這是SSH命令的一部分,因此提取需要在一行中進行。如何在Linux和Solaris上從mount上提取NFS信息?

的Linux:

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

的Solaris:不幸的是,Linux和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名稱,而不是唯一一款工作:

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

這不適用於Solaris awk。我得到'awk:第1行附近的語法錯誤'。我嘗試弄清楚awk在Solaris上的樣子。在Linux上它爲我工作。 –

+1

@FlorianFeldhaus你對你的Solaris'nawk'? – Kent

+0

葉普,與'nawk'它在Solaris上工作:-) –

0

A的肯特解決一些shoter版本

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