在bash中多个空格后获取一个字符串

时间:2017-12-12 10:58:29

标签: string bash

我需要从头文件中提取一些信息,我需要从这样的字符串中获取一个站点名称:

0008 0080 LO Institution Name                 Site Name Here

问题是网站名称也包含空格。我提出的唯一可行的方法是将行保存为字符串,然后在一定数量的字符后将网站名称作为字符串,如下所示:

  

echo $ {line:50}

但我喜欢更优雅的东西。

我刚注意到它还删除了Institution NameSite Name之间的多个空格。

3 个答案:

答案 0 :(得分:0)

如果问题标题代表您的实际问题,并且您想在多个相邻空格后提取文字,

echo "${string##*  }"
星号后面有两个空格的

将提取一个子串,其中最长的前缀以从变量值中删除的两个空格结束。

如果您需要在管道中执行此操作,则可以使用sed

轻松完成此操作
something which produces the output string |
sed 's/.*  //'

答案 1 :(得分:0)

我认为 awk 将是最佳选择。它可以轻松提取列。

echo '0008 0080 LO Institution Name                 Site Name Here'|awk '{ print $7" "$8 }'

您可以打印所需的任何列。 (并做许多其他事情。)

答案 2 :(得分:-1)

如果给定的字符串格式不是每次都改变,那么下面就可以了。

A="0008 0080 LO Institution Name Site Name Here" echo $A | cut -d " " -f 6