当前位置: 技术问答>linux和unix
awk 文本提取(重复的行只取一个)
来源: 互联网 发布时间:2017-02-09
本文导语: 大家好,这里有这样一个文本信息我们叫他conf swap - /tmp tmpfs - yes - /dev/zvol/dsk/rpool/swap - - ...
大家好,这里有这样一个文本信息我们叫他conf
swap - /tmp tmpfs - yes -
/dev/zvol/dsk/rpool/swap - - swap - no -
#
#NAS storage
fas03:/vol/gad01_04a - /netapp-oh nfs - yes -rw,bg,hard,rsize=32768
fas03:/vol/gad01_04b - /netapp-dbf nfs - yes rw,bg,hard,rsize=32768,wsize=32768
fas03:/vol/gad01_04c - /netapp-crs nfs - yes rw,bg,hard,rsize=32768,wsize=32768
fas03:/vol/gad01_04d - /netapp-log nfs - yes rw,bg,hard,rsize=32768,wsize=32768
sunnas01:/gad0104 - /oradbnas nfs - yes rw,bg,vers=3timeo=600,rsize=32768,wsize=32768
我想得到结果为:
server:fas03
path:fas03
export:/vol/gad01_04a mount:/netapp-oh
export:/vol/gad01_04b mount:/netapp-dbf
export:/vol/gad01_04c mount:/netapp-crs
export:/vol/gad01_04d mount:/netapp-log
server:sunnas01
path:sunnas01
export:/dnagad0104 mount: /oradbnas nfs
##################################################################
我的方法是
awk -F: '/:/{line=$0}END{ print "server: " $1 "n path: " $1}' dnfsConfig > oranfstab
awk -F: '/:/{print $2}' dnfsConfig| awk '{print"export: "$1 " mount: " $2}' >> oranfstab
但是这种方法只适用于conf文件中只有一个nfs server的信息(如fas03),如果是两个或两个以上就不行了。
请问大家有什么好的方法来实现我想要的结果么,
谢谢。
swap - /tmp tmpfs - yes -
/dev/zvol/dsk/rpool/swap - - swap - no -
#
#NAS storage
fas03:/vol/gad01_04a - /netapp-oh nfs - yes -rw,bg,hard,rsize=32768
fas03:/vol/gad01_04b - /netapp-dbf nfs - yes rw,bg,hard,rsize=32768,wsize=32768
fas03:/vol/gad01_04c - /netapp-crs nfs - yes rw,bg,hard,rsize=32768,wsize=32768
fas03:/vol/gad01_04d - /netapp-log nfs - yes rw,bg,hard,rsize=32768,wsize=32768
sunnas01:/gad0104 - /oradbnas nfs - yes rw,bg,vers=3timeo=600,rsize=32768,wsize=32768
我想得到结果为:
server:fas03
path:fas03
export:/vol/gad01_04a mount:/netapp-oh
export:/vol/gad01_04b mount:/netapp-dbf
export:/vol/gad01_04c mount:/netapp-crs
export:/vol/gad01_04d mount:/netapp-log
server:sunnas01
path:sunnas01
export:/dnagad0104 mount: /oradbnas nfs
##################################################################
我的方法是
awk -F: '/:/{line=$0}END{ print "server: " $1 "n path: " $1}' dnfsConfig > oranfstab
awk -F: '/:/{print $2}' dnfsConfig| awk '{print"export: "$1 " mount: " $2}' >> oranfstab
但是这种方法只适用于conf文件中只有一个nfs server的信息(如fas03),如果是两个或两个以上就不行了。
请问大家有什么好的方法来实现我想要的结果么,
谢谢。
|
Ox man!!!!!!!!
|
哪位高手解释一下这个命令,看了半天没看懂!!!!