-2

ユーザーから文字列を取得し、read strこの文字列の最後の文字が繰り返されている回数を出力する必要がある演習があります。

たとえば、文字列は:で、文字列内で が 4 回繰り返されているためab2aa2b122 、出力は : になります。42

私の問題は、文字列を単一の文字に分割することです。コマンドとコマンドを使用するために、すべての文字を他の文字とスペース" "または aで区切る必要があります。\ntruniq

コマンドを使用する必要がuniqありsortます。これらを使用するには、文字を分割する必要があります。つまり、すべての文字をスペースまたは で区切る必要があります\n

4

5 に答える 5

0

wc、、cutおよびtrのみを使用します

#/bin/bash

input="ab2aa2b122"

length=$(wc -c <<< $input)

last=$(cut -c $((length-1)) <<< $input)

tr -dc $last <<< $input | wc -c

wc -c文字列内の文字数をカウントします。

cut -c $len-1文字列の最後の文字を取得します

tr -dc $last文字列を離れる最後(つまり2)ではないすべての文字を削除してから、長さを再度カウントするために2222使用します。wc -c

./script.sh 
4
于 2012-12-22T13:04:41.417 に答える
0

OPから:

私の問題は、文字列を単一の文字に分割することです。tr コマンドと uniq コマンドを使用するために、すべての文字を他の文字とスペース (" ") または \n (次の行) で区切る必要があります。

コメントとして残されたコメントから私の他の回答へ:

cat、cut、tr、sort、uniq、for および while ループ、if、cp、wc、入出力 (>|)、グローブ スタイルの abit、拡張正規表現 (egrep..) などの基本的なコマンドを学習しました。しかし、現在の演習では、egrep と拡張 reg 式、および地球儀スタイルを使用することが許可されています。ありがとう!

を使用して文字列を「分割」するにはgrep

  • ひどいechoパイプとサブシェルの使用:

    echo "$string" | grep -o '.'
    
  • here 文字列を使用する:

    grep -o '.' <<< "$string"
    

お役に立てれば!

于 2012-12-22T11:56:05.077 に答える