我的输出看起来像这样:
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
而不是主机名。
最佳答案
如果它支持 -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+
现在将匹配并打印出以下一个或多个非空格字符。
关于linux - 使用 bash 从文本中获取特定字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26334670/