Arrays Bash脚本数组到csv
我想从数组中提取逗号分隔的字符串。在我的脚本中,我收集数据到数组Arrays Bash脚本数组到csv,arrays,bash,shell,csv,Arrays,Bash,Shell,Csv,我想从数组中提取逗号分隔的字符串。在我的脚本中,我收集数据到数组outputArr,然后我想echo它来检查它,但现在我被卡住了。我想使用以下方式在控制台上打印: echo${outputArr[*]} 但是我得到了错误的输出。所以我试着调试它并这样写: echo ${outputArr[0]} echo ${outputArr[1]} echo ${outputArr[*]} echo "-------------" 好的,这是我的输出: Terminally Yours 2204 220
outputArr
,然后我想echo
它来检查它,但现在我被卡住了。我想使用以下方式在控制台上打印:
echo${outputArr[*]}
但是我得到了错误的输出。所以我试着调试它并这样写:
echo ${outputArr[0]}
echo ${outputArr[1]}
echo ${outputArr[*]}
echo "-------------"
好的,这是我的输出:
Terminally Yours
2204
2204nally Yours
-------------
还有其他例子:
Alfa
1491
1491
-------------
为什么一开始会被空格覆盖?当然,我的目标是(最后):
在这一点上:
Alfa1491
编辑:
while read -r line
do
singleLine=$line
if [[ $singleLine =~ $regexVenueName ]]
then
singleLine=${singleLine/<span id=\"ctl00_MainContent_lbPartner\" class=\"Partner\">/}
singleLine=${singleLine/<\/span> <br \/><br \/>/}
partnerVenueNameOutput+="$singleLine"
outputArr[0]=$singleLine
fi
done < "$f"
读取时-r行
做
单线=$line
如果[[$singleLine=~$regexVenueName]]
然后
单线=${singleLine/}
单线=${singleLine/
PartnerVenuNameOutput+=“$singleLine”
outputArr[0]=$singleLine
fi
完成<“$f”
您的数组包含带回车符的元素:
$ foo=($'\rterminally yours' $'\r2204')
$ echo "${foo[0]}"
terminally yours
$ echo "${foo[1]}"
2204
$ echo "${foo[*]}"
2204inally yours
对于代码,可以添加以下内容以从变量中删除回车符:
singleLine=${singleLine//$'\r'/}
要从每个数组元素中删除任何尾随回车符,请重试
outputArray=( "${outputArray[@]%$'\r'}" )
但是,最好首先检查如何设置
outputArray
,并防止在第一位添加回车符。如果您正在读取使用DOS行结尾的文件,请先使用dos2unix
尝试“清理”它。您是否尝试引用变量echo“${outputArr[0]}”
您的数组元素以回车结束,这可能是因为您从具有DOS行结尾的文件中读取数据,或者从使用回车的命令中捕获输出。@fedorqui-Yep,不起作用。@chepner-可能。。。我怎么才能把它取下来?可能在那里。我怎样才能删除它?我从wget下载的html文件中逐行读取我的文件。我更新了我的答案,添加了一些代码。
outputArray=( "${outputArray[@]%$'\r'}" )