我的输出看起来像这样:
Tag: abrodov_linux_vlsi07_test1
Global path: /net/vposeidon02/vlsifs/vlsi02/vlsi_ccstore/07/abrodov/abrodov_linux_vlsi07_test1.vws
Server host: ta1vlsi07
Region: tlv_unix
Active: YES
View tag uuid:26075e8c.4e2e11e4.9cc0.a4:ba:db:3c:fc:0e
View on host: ta1vlsi07
View server access path: /net/vposeidon02/vlsifs/vlsi02/vlsi_ccstore/07/abrodov/abrodov_linux_vlsi07_test1.vws
View uuid: 26075e8c.4e2e11e4.9cc0.a4:ba:db:3c:fc:0e
View owner: abrodov
我需要获得服务器主机,在此示例中为ta1vlsi07
我写了一些有效的命令来获取View uuid,但是在这种情况下它没有用,这里是命令:
ct lsview -l abrodov_linux_vlsi07_test1 |grep -i 'Server host:' | cut -d" " -f3
我得到的输出是Server
而不是主机名。
答案 0 :(得分:1)
这是因为线路开头的前导空间
使用
ct lsview -l abrodov_linux_vlsi07_test1 |grep -i 'Server host:' | cut -d" " -f5
将产生输出
ta1vlsi07
此外,如果您不确定前导空格的数量,请使用
ct lsview -l abrodov_linux_vlsi07_test1 | grep -o 'Server host:.*' | cut -d" " -f3
-o
选项选择字符串中匹配的部分
答案 1 :(得分:1)
如果它支持-P
参数,则可以在单个grep命令中执行此操作。
ct lsview -l abrodov_linux_vlsi07_test1 | grep -oP 'Server host:\s*\K\S+'
<强>解释强>
Server host:
匹配字符串Server host:
\s*
匹配零个或多个空格。\K
放弃以前匹配的字符进行打印。所以在我们的情况下Server host:
加上以下空格被丢弃。\S+
现在,以下一个或多个非空格字符将匹配并打印出来。答案 2 :(得分:1)
如果需要更短更快的命令版本,您可以使用awk
$ ct lsview -l abrodov_linux_vlsi07_test1 | awk '/Server host:/ {print $3}'