在字符串中获取第th个元素

时间:2015-04-30 04:45:29

标签: bash awk

我有一个字符串

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方式或其他简单方法吗?怎么样?

4 个答案:

答案 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)

使用Christian's answer

sort: