我有一个字符串
id="123 456 789 321 654 987"
我可以通过以下方式获取第3个元素:
elem=$(echo "${id}" | awk '{print $3}')
在这里,我知道我想要第3名,但如果这是" 3"来自变量,比如$ {num}。 如何获得我想要的元素。
是的我可以使用for循环迭代$ {id},如下所示:
index=1
for i in ${id}; do
if [ ${index} == ${numchosen} ]
then
elem=${i}
fi
index=$((${index}+1))
done
但这是愚蠢的。我还可以使用awk
方式或其他简单方法吗?怎么样?
答案 0 :(得分:2)
您甚至不需要使用awk
来完成这样的简单任务,cut
也可以正常使用:
i=5
id="123 456 789 321 654 987"
elem=$(echo "${id}" | cut -d " " -f ${i})
-d " "
指定使用空格字符作为字段分隔符-f N
指定了您要提取的字段。答案 1 :(得分:1)
假设第?th索引的变量是i
:
i=4
elem=$(echo "${id}" | awk -v N=$i '{print $N}');
应打印:
321
来自man awk
:
-v var=val
--assign var=val
Assign the value val to the variable var, before execution of the program begins. Such variable values are available to the BEGIN block of an AWK program.
答案 2 :(得分:1)
使用bash内置命令替代打印元素3:
id="123 456 789 321 654 987"
ida=($id)
e=3
echo ${ida[e-1]}
答案 3 :(得分:0)
sort: