0

つまり、基本的には似expr index '0123 some string' '012345789'ていますが、逆になっています。
指定された文字のいずれでもない最初の文字のインデックスを見つけたい...
可能であれば、正規表現を使用したくない...

4

4 に答える 4

1

で文字を削除しtr、残っているものから最初のものを選択できます

left=$(tr -d "012345789" <<< "0123_some string"); echo ${left:0:1}
_

インデックスを見つけるための文字を取得したら、同じに従います

expr index "0123_some string" ${left:0:1}
5
于 2016-03-22T21:14:53.487 に答える
1

を使用してgnu awkFPATこれを行うことができます:

str="0123 some string"

awk -v FPAT='[012345789]+' '{print length($1)}' <<< "$str"
4

awk -v FPAT='[02345789]+' '{print length($1)}' <<< "$str"
1

awk -v FPAT='[01345789]+' '{print length($1)}' <<< "$str"
2

awk -v FPAT='[0123 ]+' '{print length($1)}' <<< "$str"
5
于 2016-03-22T21:23:42.423 に答える
0

これがPerlであることは知っていますが、私はそれが好きだと言わざるを得ません:

$ perl -pe '$i++while s/^\d//;$_=$i' <<< '0123 some string'
4

1 ベースのインデックスの場合$.、単一行を処理するときに 1 で初期化されたものを使用できます。

$ perl -pe '$.++while s/^\d//;$_=$.' <<< '0123 some string'
5

私が使って\dいるのは、あなたが間違ってリストから数字の 6 を除外したと思うからです。012345789

インデックスは現在スペースを指しています:

0123 some string
    ^ this space
于 2016-03-22T21:12:25.987 に答える