将文本变量切割成 4 个不同变量的正确方法
Proper way to cut text variable into 4 different variables
我有一个包含以下文本的变量。我正在努力弄清楚如何将它分成 4 个不同的变量。
[文本存储在 $t_config]
session writelock
random command
random command
random command
session writeunlock
session writelock
random command
random command
session writeunlock
session writelock
random command
random command
session writeunlock
session writelock
random command
random command
session writeunlock
我可以拆分第一个,但不确定如何拆分其他三个。我是这样做的:
x1=$(echo "$t_config"| sed '/session writeunlock/q')
使用 IFS 读取行会更容易吗?
如有任何帮助或提示,我们将不胜感激
编辑 1)
$t_config
从文件加载。
writelock-writeunlock 的每个块都是不同的variable.EX) b1,b2,b3,b4
我想你想要的是将 /session writelock/ 和 /session writeunlock/ 之间的每一行块分配给变量 b1、b2 等。
这是一种方法。正如评论者已经建议的那样,逐行阅读可能更有效率。但是,我假设您需要使用变量。
#!/bin/sh
t_config=`cat moo`
echo "$t_config" | {
INDEX=0
NL="
"
while read LINE; do
case $LINE in
("session writelock")
OUTPUT=""
;;
("session writeunlock")
let INDEX=$INDEX+1
VAR="b$INDEX"
eval "$VAR='$OUTPUT'"
OUTPUT=""
;;
(*) OUTPUT="$OUTPUT$NL$LINE";;
esac
done
# now do something with the variables
echo "b1:$b1"
echo "b2:$b2"
echo "b3:$b3"
echo "b3:$b4"
}
我有一个包含以下文本的变量。我正在努力弄清楚如何将它分成 4 个不同的变量。
[文本存储在 $t_config]
session writelock
random command
random command
random command
session writeunlock
session writelock
random command
random command
session writeunlock
session writelock
random command
random command
session writeunlock
session writelock
random command
random command
session writeunlock
我可以拆分第一个,但不确定如何拆分其他三个。我是这样做的:
x1=$(echo "$t_config"| sed '/session writeunlock/q')
使用 IFS 读取行会更容易吗?
如有任何帮助或提示,我们将不胜感激
编辑 1)
$t_config
从文件加载。
writelock-writeunlock 的每个块都是不同的variable.EX) b1,b2,b3,b4
我想你想要的是将 /session writelock/ 和 /session writeunlock/ 之间的每一行块分配给变量 b1、b2 等。
这是一种方法。正如评论者已经建议的那样,逐行阅读可能更有效率。但是,我假设您需要使用变量。
#!/bin/sh
t_config=`cat moo`
echo "$t_config" | {
INDEX=0
NL="
"
while read LINE; do
case $LINE in
("session writelock")
OUTPUT=""
;;
("session writeunlock")
let INDEX=$INDEX+1
VAR="b$INDEX"
eval "$VAR='$OUTPUT'"
OUTPUT=""
;;
(*) OUTPUT="$OUTPUT$NL$LINE";;
esac
done
# now do something with the variables
echo "b1:$b1"
echo "b2:$b2"
echo "b3:$b3"
echo "b3:$b4"
}