首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用bash从文本中获取特定字符串

使用bash从文本中获取特定字符串
EN

Stack Overflow用户
提问于 2014-10-13 07:13:16
回答 3查看 34关注 0票数 1

我的输出如下所示:

代码语言:javascript
复制
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,我编写了一些有效的命令,但在本例中,它没有工作,下面是命令:

代码语言:javascript
复制
ct lsview -l abrodov_linux_vlsi07_test1 |grep -i 'Server host:' | cut -d" " -f3

我得到的输出是Server,而不是主机名。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-13 07:24:26

如果它支持-P参数,可以在一个grep命令中这样做。

代码语言:javascript
复制
ct lsview -l abrodov_linux_vlsi07_test1 | grep -oP 'Server host:\s*\K\S+'

解释:

  • Server host:与字符串Server host:匹配。
  • \s*匹配零或多个空格。
  • \K从打印中丢弃以前匹配的字符。所以在我们的例子中,Server host:加上下面的空格被丢弃了。
  • \S+现在将匹配并打印出以下一个或多个非空格字符。
票数 1
EN

Stack Overflow用户

发布于 2014-10-13 07:20:57

这是因为这条线开始的时候有前导空间。

使用

代码语言:javascript
复制
ct lsview -l abrodov_linux_vlsi07_test1 |grep -i 'Server host:' | cut -d" " -f5

产出量

代码语言:javascript
复制
ta1vlsi07

另外,如果您并不总是确定前导空格的数量,那么请使用

代码语言:javascript
复制
 ct lsview -l abrodov_linux_vlsi07_test1 | grep -o 'Server host:.*' | cut -d" " -f3

-o选项选择字符串中匹配的部分。

票数 1
EN

Stack Overflow用户

发布于 2014-10-13 08:04:07

如果需要更短、更快的命令版本,可以使用awk

代码语言:javascript
复制
 $ ct lsview -l abrodov_linux_vlsi07_test1 | awk '/Server host:/ {print $3}'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26334670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档