bash 在拆分后获得第二次出现

bash 在拆分后获得第二次出现

我想用“|”作为空格来分割文本卷并获取第二次出现的内容,即值 - 'test2'

volumes=|test1|test2
echo $volumes | tr "|" "\n"

上述命令分成每一行..我可以循环遍历它并获取值但想要最有效的方法。

答案1

您可以使用 shell 的内置参数替换来删除与某个字符"${volumes##*|}"匹配的最长初始字符串|

$ volumes="|test1|test2"
$ echo "${volumes##*|}"
test2

或者,cut

$ cut -d\| -f3 <<< "$volumes"
test2

或者awk

$ awk -F\| '{print $NF}' <<< "$volumes"
test2

答案2

Steeldriver 已经为您提供了最简单的选项。下面还有一些:

  • awk

    awk -F'|' '{print $3}' <<<"$volumes"
    
  • perl

    perl -F"\|" -lane 'print $F[2]' <<<"$volumes"
    
  • sed

    sed 's/.*|//' <<<$volumes
    

答案3

按照你的tr命令

$ volumes="|test1|test2"
$ tr "|" "\n" <<< $volumes | tail -n1
test2

相关内容