我想使用shell脚本根据最后一个分隔符从文件名中提取左和右
Ex : filename = 'test_testone_test3_1234'
I'm expecting below values
file = 'test_testone_test3'
seq = '1234'
有更好的方法吗?
您可能想了解一些关于参数扩展的知识
$ filename="test_testone_test3_1234"
$ echo "${filename#*_}"
testone_test3_1234
$ echo "${filename##*_}"
1234
$ echo "${filename%_*}"
test_testone_test3
$ echo "${filename%%_*}"
test
$ echo "${filename#*_*_}"
test3_1234
$ echo "${filename%_*_*}"
test_testone
您也可以使用cut
。-d
用于字段分隔符,-f
用于字段。
$ filename="test_testone_test3_1234"
$ echo "$filename" | cut -d_ -f1-3
test_testone_test3
$ echo "$filename" | cut -d_ -f4
1234
$ echo "$filename" | cut -d_ -f1-2
test_testone
$ echo "$filename" | cut -d_ -f3-
test3_1234