Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash SHELL从最后一个元素中删除逗号_Bash - Fatal编程技术网

Bash SHELL从最后一个元素中删除逗号

Bash SHELL从最后一个元素中删除逗号,bash,Bash,我已经被困了几个小时了。我想删除表中最后一个元素的逗号,但我不知道如何获取最后一个元素以及如何删除这个逗号而不影响其他元素 这些要素如下: DIR_PLG40AT : 145_PLG40AT.0234.tsv, DIR_PLG40AT : 146_PLG40AT.0234.tsv, DIR_PLG40AT : 222_PLG40AT.0234.tsv, DIR_PLG40AT : 043_PLG40AT.0234.tsv, DIR_PLG40AT : 045_PLG40AT.0234.tsv

我已经被困了几个小时了。我想删除表中最后一个元素的逗号,但我不知道如何获取最后一个元素以及如何删除这个逗号而不影响其他元素

这些要素如下:

DIR_PLG40AT : 145_PLG40AT.0234.tsv, DIR_PLG40AT : 146_PLG40AT.0234.tsv, 
DIR_PLG40AT : 222_PLG40AT.0234.tsv, DIR_PLG40AT : 043_PLG40AT.0234.tsv, 
DIR_PLG40AT : 045_PLG40AT.0234.tsv, DIR_PLG40AT : 193_PLG40AT.0234.tsv, 
DIR_PLG40AT : 025_PLG40AT.0234.tsv, DIR_PLG40AT : 073_PLG40AT.0234.tsv, 
DIR_PLG40AT : 232_PLG40AT.0234.tsv, DIR_PLG40AT : 161_PLG40AT.0234.tsv, 
DIR_PLG40AT : 147_PLG40AT.0234.tsv, DIR_PLG40AT : 075_PLG40AT.0234.tsv, 
DIR_PLG40AT : 245_PLG40AT.0234.tsv, DIR_PLG40AT : 256_PLG40AT.0234.tsv, 
DIR_PLG40AT : 096_PLG40AT.0234.tsv, DIR_PLG40AT : 054_PLG40AT.0234.tsv, 
DIR_PLG40AT : 259_PLG40AT.0234.tsv, DIR_PLG40AT : 154_PLG40AT.0234.tsv, 
DIR_PLG40AT : 211_PLG40AT.0234.tsv, DIR_PLG40AT : 198_PLG40AT.0234.tsv, 
DIR_PLG40AT : 164_PLG40AT.0234.tsv, DIR_PLG40AT : 213_PLG40AT.0234.tsv, 
DIR_PLG40AT : 155_PLG40AT.0234.tsv, DIR_PLG40AT : 175_PLG40AT.0234.tsv, 
DIR_PLG40AT : 092_PLG40AT.0234.tsv, DIR_PLG40AT : 212_PLG40AT.0234.tsv, 
DIR_PLG40AT : 097_PLG40AT.0234.tsv, DIR_PLG40AT : 151_PLG40AT.0234.tsv, 
DIR_PLG40AT : 011_PLG40AT.0234.tsv, DIR_PLG40AT : 021_PLG40AT.0234.tsv, 
DIR_PLG40AT : 063_PLG40AT.0234.tsv, DIR_PLG40AT : 121_PLG40AT.0234.tsv, 
DIR_PLG40AT : 171_PLG40AT.0234.tsv, DIR_PLG40AT : 234_PLG40AT.0234.tsv, 
DIR_PLG40AT : 012_PLG40AT.0234.tsv, DIR_PLG40AT : 197_PLG40AT.0234.tsv, 
DIR_PLG40AT : 052_PLG40AT.0234.tsv, DIR_PLG40AT : 074_PLG40AT.0234.tsv, 
DIR_PLG40AT : 242_PLG40AT.0234.tsv, DIR_PLG40AT : 231_PLG40AT.0234.tsv, 
DIR_PLG40AT : 095_PLG40AT.0234.tsv, DIR_PLG40AT : 243_PLG40AT.0234.tsv, 
DIR_PLG40AT : 162_PLG40AT.0234.tsv, DIR_PLG40AT : 196_PLG40AT.0234.tsv, 
DIR_PLG40AT : 148_PLG40AT.0234.tsv, DIR_PLG40AT : 179_PLG40AT.0234.tsv, 
DIR_PLG40AT : 022_PLG40AT.0234.tsv, DIR_PLG40AT : 173_PLG40AT.0234.tsv, 
DIR_PLG40AT : 165_PLG40AT.0234.tsv, DIR_PLG40AT : 014_PLG40AT.0234.tsv, 
DIR_PLG40AT : 024_PLG40AT.0234.tsv, DIR_PLG40AT : 223_PLG40AT.0234.tsv, 
DIR_PLG40AT : 093_PLG40AT.0234.tsv, DIR_PLG40AT : 041_PLG40AT.0234.tsv, 
DIR_PLG40AT : 071_PLG40AT.0234.tsv, DIR_PLG40AT : 091_PLG40AT.0234.tsv, 
DIR_PLG40AT : 144_PLG40AT.0234.tsv, DIR_PLG40AT : 235_PLG40AT.0234.tsv, 
DIR_PLG40AT : 225_PLG40AT.0234.tsv, DIR_PLG40AT : 163_PLG40AT.0234.tsv, 
DIR_PLG40AT : 233_PLG40AT.0234.tsv, DIR_PLG40AT : 122_PLG40AT.0234.tsv, 
DIR_PLG40AT : 194_PLG40AT.0234.tsv, DIR_PLG40AT : 023_PLG40AT.0234.tsv, 
DIR_PLG40AT : 051_PLG40AT.0234.tsv, DIR_PLG40AT : 143_PLG40AT.0234.tsv, 
DIR_PLG40AT : 215_PLG40AT.0234.tsv, DIR_PLG40AT : 125_PLG40AT.0234.tsv, 
DIR_PLG40AT : 251_PLG40AT.0234.tsv, DIR_PLG40AT : 176_PLG40AT.0234.tsv, 
DIR_PLG40AT : 177_PLG40AT.0234.tsv, DIR_PLG40AT : 191_PLG40AT.0234.tsv, 
DIR_PLG40AT : 252_PLG40AT.0234.tsv, DIR_PLG40AT : 254_PLG40AT.0234.tsv, 
DIR_PLG40AT : 124_PLG40AT.0234.tsv, DIR_PLG40AT : 055_PLG40AT.0234.tsv, 
DIR_PLG40AT : 253_PLG40AT.0234.tsv, DIR_PLG40AT : 056_PLG40AT.0234.tsv, 
DIR_PLG40AT : 016_PLG40AT.0234.tsv, DIR_PLG40AT : 195_PLG40AT.0234.tsv, 
DIR_PLG40AT : 142_PLG40AT.0234.tsv, DIR_PLG40AT : 042_PLG40AT.0234.tsv, 
DIR_PLG40AT : 221_PLG40AT.0234.tsv, DIR_PLG40AT : 241_PLG40AT.0234.tsv, 
DIR_PLG40AT : 065_PLG40AT.0234.tsv, DIR_PLG40AT : 013_PLG40AT.0234.tsv, 
DIR_PLG40AT : 015_PLG40AT.0234.tsv, DIR_PLG40AT : 094_PLG40AT.0234.tsv, 
DIR_PLG40AT : 258_PLG40AT.0234.tsv, DIR_PLG40AT : 026_PLG40AT.0234.tsv, 
DIR_PLG40AT : 172_PLG40AT.0234.tsv, DIR_PLG40AT : 064_PLG40AT.0234.tsv, 
DIR_PLG40AT : 199_PLG40AT.0234.tsv, DIR_PLG40AT : 072_PLG40AT.0234.tsv, 
DIR_PLG40AT : 224_PLG40AT.0234.tsv, DIR_PLG40AT : 214_PLG40AT.0234.tsv, 
DIR_PLG40AT : 152_PLG40AT.0234.tsv,
守则:

for fichier in `find $rep -type f`
do
  fichier=$(basename "$fichier")
  tmp+="$variableFinal DIR_PLG40AT : $fichier,"
done


tableau=${#tmp[*]}
for (( i=0; i<tableau; i++ )) 
do
    chaine=${tmp[i]}
done
用于“查找$rep-类型f”中的fichier`
做
fichier=$(basename“$fichier”)
tmp+=“$variableFinal DIR_PLG40AT:$fichier,”
完成
tableau=${tmp[*]}

对于((i=0;i如果您使用的是bash的现代版本(>=4.0版),您可以在不使用find的情况下执行此操作:

!/bin/bash
shopt-s环球之星
tmp=“”
对于**/*中的f;do
tmp+=“目录PLG40AT:$(基本名称“$f”),”
完成
回显“${tmp%,}”
否则:

!/bin/bash
tmp=“”
当IFS=read-d'-rf;do时
tmp+=“目录PLG40AT:$(基本名称“$f”),”

完成
> cat table.dat
DIR_PLG40AT : 145_PLG40AT.0234.tsv, DIR_PLG40AT : 146_PLG40AT.0234.tsv,
DIR_PLG40AT : 222_PLG40AT.0234.tsv, DIR_PLG40AT : 043_PLG40AT.0234.tsv,
DIR_PLG40AT : 045_PLG40AT.0234.tsv, DIR_PLG40AT : 193_PLG40AT.0234.tsv,
DIR_PLG40AT : 025_PLG40AT.0234.tsv, DIR_PLG40AT : 073_PLG40AT.0234.tsv,
> sed 's/,\s*$//g' table.dat
DIR_PLG40AT : 145_PLG40AT.0234.tsv, DIR_PLG40AT : 146_PLG40AT.0234.tsv
DIR_PLG40AT : 222_PLG40AT.0234.tsv, DIR_PLG40AT : 043_PLG40AT.0234.tsv
DIR_PLG40AT : 045_PLG40AT.0234.tsv, DIR_PLG40AT : 193_PLG40AT.0234.tsv
DIR_PLG40AT : 025_PLG40AT.0234.tsv, DIR_PLG40AT : 073_PLG40AT.0234.tsv
>

tmp
不是数组,因此
${{tmp[*]}
编写
${{{tmp}只是一段很长的路
。请参阅此链接以删除最后一行中的逗号。。无论您在做什么,您的问题都不清楚。第一个文本块应该是代码的输出吗?该代码根本没有输出。@miken32这就是我希望在tmp表中包含的内容,只是我有一种印象,认为它不会创建一个表。@chepner如何将其放入数组这是一个措辞拙劣的问题,但如果您查看现有代码,这些数据来自目录中的文件列表,而不是文本文件。