行の最初のスペースの前後の文字数をどのように数えますか?

行の最初のスペースの前後の文字数をどのように数えますか?

最初のスペースの後の文字数を計算したいと思います。たとえば、行は次のようになります。 私はウサギです

N = 最初のスペースの後の文字数は7(ウサギ)なので、方法を見つけました。つまり、最初のスペースの前の文字数とスペース自体 = P を計算します。その後、N = 行の長さ - P = 11 - 4 = 7(「Iam」の長さは4です)

count_first_part() {
line=$1
count=0
echo "$1" | grep -o . >file1.txt
while read -r linee; do
  if [[ "$linee" != [^[:space:]] ]]; then
  ((count++))
  else
    ((count++))
    break
  fi

done <file1.txt
echo "$count" } 
count_length_of_line() {
string=$1
count=$(echo "$string" | wc -c)
}
p=$(count_first_part "Iam a bunny") 
l=$(count_length_of_line "Iam a bunny")
n=$l-$p
echo "$n"

ただし、count_first_part()関数は1を返し、count_length_of_line()は長さ+ 1を返します(これは無効です)。誰が私を助けることができますか?

ベストアンサー1

readこの文字列に複数の変数を入力できます。

$ str="Iam a bunny"
$ read -r first rest <<<"$str"
$ echo "${#first} ${#rest}"
3 7

first+=" "必要に応じて、最初のお気に入りにスペースを追加できます。

技術が適応できないだろう多くの種類単語の間にはスペースがあります。

おそらくより強力な技術は正規表現です。

$ if [[ $str =~ ([^[:blank:]]+[[:blank:]]+)(.*) ]]; then
    first=${BASH_REMATCH[1]} rest=${BASH_REMATCH[2]}
  fi
$ echo "${#first} ${#rest}"
4 7

おすすめ記事