我想要一个命令,该命令可以从文件名中删除开头的4个字母和结尾的4个字母。例如:如果文件名是: 形式1234.tgz 我想从文件名中获取数字1234。有人可以建议在Linux上的命令提示符下完成此操作的简单方法吗?
答案 0 :(得分:1)
使用cursor.rawQuery("select column from Table where column_person_Name='John' OR column_person_Name='Bob');
可以轻松删除前四个字符。不幸的是,它没有内置的方法可以从字符串末尾删除字符,但是您始终可以使用cut
apply rev
然后再cut
将其反转。
rev
答案 1 :(得分:0)
使用参数替换。
span:before {position: absolute; width: 100%; height: 100%; content: '***'}
filename=form1234.tgz
short=${filename#????}
short=${short%????}
从左侧删除,#
从右侧删除。
答案 2 :(得分:0)
您实际上可以使用很多选项...
对于这种事情,最好匹配您想要的内容而不是删除不需要的内容:可能会出现输入错误,或者已经存在被截断的文件...
例如,如果您想摆脱扩展名,可以使用parameter expansion,几乎每个shell都已支持它:
printf "%s" "${file%.*}"
如果只需要数字,则可以使用regular expression:
printf "%s" "${file}" | sed -e "s/.*\([0-9]*\)\..*/\1/"
让我们说您的问题是通用的,没有提供您想要的很多信息...
如果您要静态删除前4个字符,可以使用参数扩展sed
,cut
,awk
或任何您想要的...
例如,使用sed时,它将类似于:
printf "%s" "${file}" | sed -e "s/^....\(.*\)....$/\1/"
通过参数扩展将是:
file="${file#????}"
file="${file%????}"
printf "%s" "${file}"
最后,如果您在纯bash环境中,则可以简单地使用一些bash参数扩展(请注意,此选项并非在所有地方都有效):
printf "%s" "${file:4:-4}"
请注意,每个printf
都可以(显然)被echo
(或echo -n
)取代。
答案 3 :(得分:0)
如果您知道要去除开头的几个字符,可能是最简单的 和结束。
name=form1234.tgz
echo "${name:4:$((${#name} - 8))}"
1234