我需要在这种格式的文本文件中用足球圆形结果编写足球联赛表
abc 4 def 5 ghi 9 hef 10
格式为
[home team][home team points][guest team][guest team points]
该程序将接受五个团队并有多个文本文件可供阅读。我不知道的是如何获得每个相应团队的积分。我在这个站点中看到了解析字符串的一些解决方案,其中包含一个空格和分隔符。但是,我需要像abc 4
def 5
这样阅读。有什么解决方案吗?
以下是此时的代码。我只想弄清楚如何阅读团队的对应分数。谢谢你的帮助。
if [ $# -eq 0 ]; then
echo "No argument"
else
echo "The number of arguments : $#"
echo "The full list : $@"
myArray=("$@")
echo "${myArray[0]}"
arraylength=${#myArray[@]}
declare -p myArray
#loop for places entered
for ((i=0;i<${arraylength};i++));
do
#iterate on the files stored to find target
for matchfile in match*.txt;
do
declare file_content=$( cat "${matchfile}" )
#check whether a file has target lanaguage
if [[ " $file_content " =~ ${myArray[i]} ]] # please note the space before and after the file content
then
#awk -v a="$file_content" -v b="${myArray[i]}" 'BEGIN{print index(a,b)}'
#echo "${myArray[i]}"
#let j=j+1
echo "${myArray[i]} found in ${matchfile}: with a score ..."
fi
done
done
fi
exit
答案 0 :(得分:1)
由于您已经与正则表达式匹配:
UIImage
您可以这样调整:
if [[ " $file_content " =~ ${myArray[i]} ]]; then
re="(^| )${myArray[i]} ([0-9]*)( |$)"
if [[ $file_content =~ $re ]]; then
和(^| )
部分确保在团队名称后面有空格或文件的开头或结尾时有效。 ( |$)
部分是将分数捕获到&#34;捕获组&#34;。
运行该正则表达式匹配将使用比较中的所有匹配项填充数组([0-9]*)
,因此BASH_REMATCH
将获得分数。