![bash 在拆分后获得第二次出现](https://linux22.com/image/875811/bash%20%E5%9C%A8%E6%8B%86%E5%88%86%E5%90%8E%E8%8E%B7%E5%BE%97%E7%AC%AC%E4%BA%8C%E6%AC%A1%E5%87%BA%E7%8E%B0.png)
我想用“|”作为空格来分割文本卷并获取第二次出现的内容,即值 - '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