Bash:将String变量更改为以。开头的第一个单词

时间:2016-11-09 15:54:28

标签: string bash

我正在尝试隔离以enp

开头的第一个接口

示例:

foo = "bar0s0 foo0s8 enp0s0"
startword = "enp"

结果:

$foo = enp0s0

4 个答案:

答案 0 :(得分:0)

WORDS="bar0s0 foo0s8 enp0s0"
START="enp"

for w in $WORDS; do 
    case $w in
    ${START}*)  
             echo $w
             break # break out of the for loop for first instance
             ;;
    esac
done

答案 1 :(得分:0)

var timer:Timer?

override func viewDidLoad() {
        super.viewDidLoad()
        timer = Timer.scheduledTimer(timeInterval: 1,
                                 target: self,
                                 selector: #selector(timerFired),
                                 userInfo: nil,
                                 repeats: true)
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewDidDisappear(animated)
    if let timer = timer {
        timer.invalidate()
    }
}

答案 2 :(得分:0)

这是一个使用awk的解决方案,根据您的需要进行修改:

 echo "bar0s0 foo0s8 enp888  enp0s0" | awk ' { for(i = 1; i <= NF; i++) if($i ~ "enp") { print $i; break;} } '

答案 3 :(得分:0)

您将问题标记为bash,因此我将提供简单,便携的解决方案。

由于您没有为您的问题提供上下文,因此很难确定最佳方法可能是什么,但在大多数情况下,这应该可以解决问题。

bash>bash --version
GNU bash, version 3.2.52(2)-release (i586-suse-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.
bash>foo="bar0s0 foo0s8 enp0s0 random word123"
bash>startword="enp"
bash>index=$(expr index "$foo" $startword)
bash>echo ${foo:$(($index -1)):6}
enp0s0

有几点需要注意:

  1. 这假设您实际上正在使用bash,并且您的工具有限。
  2. 这也假定接口名称总是6个字符。
  3. 此方法使用子字符串提取,如果您想阅读它,请查看http://www.tldp.org/LDP/abs/html/string-manipulation.html