substr() の問題・・・じゃねぇよ
substr() の問題というわけでもなく、出題者がどうやって自己解決したかもかかれてないので、何とも言えない問題です。
Question
BEGIN { print "Ol a'!" } /ActFrom\[1\]/{ S1L = $0;# sub(/ActFrom\[1\]="/,"",S1L); sub(/";/,"",S1L); p=S1L+0; } /Boards\[1\]=/{m1=$0; sub(/Boards\[1\]="/,"",m1); P1=substr(m1,p,1); } END{print p; print m1; print P1; }
というファイルを使って、
Boards[0]="xxxxxxxxxqxxxpkppxxxxxpxPxxxQRxxxrxxxxxxxxxxxPxxxxxxxxPPxxxxxxKxb"; Boards[1]="xxxxxxxxxqxxxpxppxxxxxpkPxxxQRxxxrxxxxxxxxxxxPxxxxxxxxPPxxxxxxKxw"; Boards[2]="xxxxxxxxxqxxxpxppxxxxxpkPxxxQxxRxrxxxxxxxxxxxPxxxxxxxxPPxxxxxxKxb"; Boards[3]="xxxxxxxxxqxxxpxppxxxxxxkPxxxQxxpxrxxxxxxxxxxxPxxxxxxxxPPxxxxxxKxw"; Boards[4]="xxxxxxxxxqxxxpxppxxxxQxkPxxxxxxpxrxxxxxxxxxxxPxxxxxxxxPPxxxxxxKxb"; ActFrom[0]="14"; ActTo[0]="23";
というファイルを処理した時に n 番目の位置の文字を取り出したいようなのです。
Answer
自己解決してしまっていて、回答がないのですが、
$ echo 'Q xxxxxxxxxqxxxpkppxxxxxpxPxxxQRxxxrxxxxxxxxxxxPxxxxxxxxPPxxxxxxKxb' | gawk '{print index($2, "Q")}' 29
でいいんではないでしょうか?