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