打印字符串正则表达式bash的一部分

时间:2014-02-19 17:44:14

标签: regex string bash

从此内容(在文件中):

  

myspecificBhost.fqdn.com myspecificaBhost.fqdn.com myspecificzBhost.fqdn.com

我需要打印“B”中的后4个字符:

  

Bhost

我试过了:

echo ${var:position1:lenght}

但是位置1永远不会相等

4 个答案:

答案 0 :(得分:2)

使用BASH正则表达式:

s='myspecificBhost.fqdn.com myspecificaBhost.fqdn.com myspecificzBhost.fqdn.com'
[[ "$s" =~ (B[a-z][a-z][a-z][a-z]) ]] && echo "${BASH_REMATCH[1]}"
Bhost

答案 1 :(得分:1)

尝试sed命令:

sed -nr '/.*c(.{4,6}).*/s//\1/p' input.txt | cut -c2-6
RESULT:
Bhost

使用grep命令:

cat input.txt | grep -o B.... | head -1
RESULT:
Bhost

答案 2 :(得分:0)

尝试:

cat file | grep -o B....

答案 3 :(得分:0)

使用参数替换进行Bash。输出4个字符 在第一个'B'之后:

text='myspecificBhost.fqdn.com myspecificaBhost.fqdn.com myspecificzBhost.fqdn.com'

text=${text#*B}
text=${text:0:4}
echo "${text}"

输出:

host

获得领先的'B'使用

echo "B${text}"