读取包含shell脚本变量中特定文本的行

时间:2017-10-31 10:23:28

标签: bash shell aix

我在shell脚本中有一个变量,如下所示。每一行用换行符分隔。

var="This is the first line
This is the second line
This is the third line
/home/usr/new/foo.txt
This is the forth line
This is the fifth line"

现在我需要读取包含.txt的行并将其存储在另一个变量中。

another_var=/home/usr/new/foo.txt

2 个答案:

答案 0 :(得分:2)

这更通用。

#!/bin/bash

var="This is the first line
This is the second line
This is the third line
/home/usr/new/foo.txt
This is the forth line
This is the fifth line"

dog="$( echo "$var" | grep txt )"
echo $dog

我使用了bash,但我相信这也适用于ksh。

我没有注意到Zsigmond已经提出过这个建议。

答案 1 :(得分:1)

mapfile的最新版本中,您应该有.txt命令可用于解析多行字符串。我们将字符串解析为数组并匹配包含glob字符串mapfile -t new_array <<< "$var" for element in "${new_array[@]}"; do if [[ $element == *".txt"* ]]; then new_var="$element" break fi done 的行并将其打印为

setTimeout(() => {
    this.setState(getNextState());
}, 5000);