如何从bash变量回显/打印特定行

lac*_*991 8 variables bash debian

我试图从多行bash变量打印特定行.我发现了以下内容:

while read line; do echo LINE: "$line"; done <<< "$x"
Run Code Online (Sandbox Code Playgroud)

其中x将是变量,但它只是打印出所有行而不是只打印一行(比如说第1行).我怎么能适应这个来打印出一条特定的线而不是所有线呢?(希望避免将变量写入文件)

Fat*_*ror 9

您可以将其拆分为如下数组:

IFS=$'\n' lines=($x)
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过索引数组来访问任何行,例如:

echo ${lines[1]}
Run Code Online (Sandbox Code Playgroud)

(当然lines[0]是"第1行").


Wil*_*ell 8

要打印第N行:

sed -n ${N}p <<< "$x"
Run Code Online (Sandbox Code Playgroud)

或者(更便携):

sed -n ${N}p << EOF
$x
EOF
Run Code Online (Sandbox Code Playgroud)

要么

echo "$x" | sed -n "$N"p
Run Code Online (Sandbox Code Playgroud)

要么

echo "$x" | sed -n ${N}p
Run Code Online (Sandbox Code Playgroud)

或(对于特定情况N == 3)

echo "$x" | sed -n 3p
Run Code Online (Sandbox Code Playgroud)

要么

while read line; do echo LINE: "$line"; done <<< "$x" | sed -n ${N}p
Run Code Online (Sandbox Code Playgroud)

要么

while read line; do echo LINE: "$line"; done << EOF | sed -n ${N}p
$x
EOF
Run Code Online (Sandbox Code Playgroud)