这是仅限Bash的解决方案:
#!/bin/bash
INPUT="Release_2019_Config_V6_Standalone_PJ6678_Test"
IFS='_' read -ra IN <<< "$INPUT"
echo ${IN[5]}
或使用剪切:
cut -d '_' -f 6 <<< "Release_2019_Config_V6_Standalone_PJ6678_Test"
或使用awk:
awk -F "_" '{ print $6 }' <<< "Release_2019_Config_V6_Standalone_PJ6678_Test"
,
如果您想要纯现金解决方案,则可以使用标记化文件名,并选择第5个元素
IFS=_ read -a token <<< "$folder_name"
id=${token[5]}
消除因每个文件夹名称启动其他程序而导致的依赖性和性能下降。
,
尝试以下命令:
echo $a | awk -F'_' '{print $6}'
在这里,_
是定界符,$a
是保存该值的变量。
,
为完整起见,这是一个不依赖数组的bash
扩展的纯壳解决方案。
$ folder_name=Release_2019_Config_V6_Standalone_PJ6678_Test
$ tmp=${folder_name#*_*_*_*_*_} # Because we know how many _ to strip
$ echo ${tmp%_*}
PJ6678
由于#
运算符去除了最短前缀,因此不允许*
匹配任何_
本身;如果确实如此,我们可以通过使下划线匹配模式中文字_
之一来缩短前缀。
本文链接:https://www.f2er.com/3159317.html