lac*_*991 8 variables bash debian
我试图从多行bash变量打印特定行.我发现了以下内容:
while read line; do echo LINE: "$line"; done <<< "$x"
Run Code Online (Sandbox Code Playgroud)
其中x将是变量,但它只是打印出所有行而不是只打印一行(比如说第1行).我怎么能适应这个来打印出一条特定的线而不是所有线呢?(希望避免将变量写入文件)
您可以将其拆分为如下数组:
IFS=$'\n' lines=($x)
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过索引数组来访问任何行,例如:
echo ${lines[1]}
Run Code Online (Sandbox Code Playgroud)
(当然lines[0]是"第1行").
要打印第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)