我有一个使用bash脚本的程序
目的是将测试文件的输出显示为网格样式。
在我的output.txt中存储,直到$ l为a1,a2,a3,a4,c1,c2
我的下面有一个函数,它将显示以下内容
mark_seat() {
# Called by display_seats
if [ $(echo "$1" | grep -c "$2$3") -gt 0 ]
then
echo -en '\E[1;35mX\E[0m'
set_colwidth "" 5
else
set_colwidth "" 6
fi
}
如果无法检测到我的$ l中的类似数据,它将给出如下所示的空格。
我的问题是可以将c1,c2设置为驱逐舰,因此当它显示输出时,它将显示“D”而不是“X”。
答案 0 :(得分:0)
你可以用子串操作
来做到这一点假设存储位置使得字符串表示行
A_ROW="____X_____"
echo ${A_ROW:0:4}D${A_ROW:5:4}
____D_____
然而,还有一个技巧可以让角色的位置连续
ASTRING="abcdefg"
POS_d=${ASTRING%d*}
echo position of d is ${#POS_d}
#note that POS_d is actually the string abc and ${#POS_d} is the length of abc
#since values start at 0, this is the position of d
#if you have multiple occurrences you can do this multiple times