我在试着切断这条线
`Cycling-Tour.Of.Great.Britain.Results-Cycling.txt`
to
`cycling-tour.of.great.britain.txt`因此,我希望删除这一部分。结果-在bash脚本中使用cut循环,但没有成功,我尝试过
`txtname=$(echo "$txtname" | tr '[A-Z]' '[a-z]' | cut -d "-" -f2,11)`它对大写字母进行排序,但它删除了大部分行。任何帮助都将不胜感激
发布于 2020-07-21 22:36:00
尝尝这个
$ name='Cycling-Tour.Of.Great.Britain.Results-Cycling.txt'转换为小写
$ echo ${name,,}
cycling-tour.of.great.britain.results-cycling.txt并删除“Results-Cycling”
$ lower=${name,,}
$ echo ${lower//.results-cycling/}
cycling-tour.of.great.britain.txt发布于 2020-07-21 22:29:50
bash有不错的字符串解析功能。在不产生这么多子进程的情况下,有一些选项。
使用
$: declare -l txtname首先,你不必再担心案例了。
$: txtname=Cycling-Tour.Of.Great.Britain.Results-Cycling.txt
$: IFS=. read a b c d x e <<< "$txtname"
$: echo "$a.$b.$c.$d.$e"
cycling-tour.of.great.britain.txt或者只是
echo "${txtname/results-cycling.}"
cycling-tour.of.great.britain.txt如果你只是想使用cut -
$: cut -d . -f 1-4,6 <<< "${txtname,,}"
cycling-tour.of.great.britain.txt发布于 2020-07-21 22:46:01
prefix=$(echo "Cycling-Tour.Of.Great.Britain.Results-Cycling.txt" | cut -d'.' -f1-4 | tr '[A-Z]' '[a-z]')
echo "${prefix}.txt"生成子进程是可以的。
https://stackoverflow.com/questions/63015455
复制相似问题