从我必须获得的行号得到的字符串中获取特定行存储在变量中?

时间:2014-07-11 16:53:52

标签: linux bash sed sh

我正在尝试获取变量的特定行。我必须得到的行存储在i中。我的代码现在看起来像这样。

$(echo "$data" | sed '$iq;d')

看起来我将i置于错误的位置,为i输入一个数字可以正常工作,但$i可以获得整个字符串。

我还没有找到适用于变量的解决方案,而且我对bash不太熟悉并且会感谢帮助,

编辑:一点上下文

i=5 data=$(netstat -a | grep ESTAB) line=$(echo "$data" | sed "${i}p") echo $line

2 个答案:

答案 0 :(得分:1)

改为使用sed -n "${i}p"

示例:

i=4; seq 1 10 | sed -n "${i}p"

输出:

4

加成:

i=5
readarray -O 1 -t data < <(exec netstat -a | grep ESTAB)  ## Stores data as an array of lines starting at index 1
line=${data[i]}
echo "$line"
# printf '%s\n' "${data[@]}"  ## Prints whole data.

答案 1 :(得分:0)

以下是BASH本身可以做到的方法:

IFS=$'\n' arr=($data)
echo "${arr[$i]}"