文を取り、Word数、文字数(スペースを除く)、各Wordの長さと長さを出力するスクリプトを作成する必要があります。私は存在することを知っていますwc -m
Wordの文字数に対抗するには、スクリプトでそれを利用するにはどうすればよいですか。
#!/bin/bash
mystring="one two three test five"
maxlen=0;
for token in $mystring; do
echo -n "$token: ";
echo -n $token | wc -m;
if [ ${#token} -gt $maxlen ]; then
maxlen=${#token}; fi;
done
echo "--------------------------";
echo -n "Total words: ";
echo "$mystring" | wc -w;
echo -n "Total chars: ";
echo "$mystring" | wc -m;
echo -n "Max length: ";
echo $maxlen
ジェイパル・シンの答えにリフ:
jcomeau@intrepid:~$ mystring="one two three four five"
jcomeau@intrepid:~$ echo "string length: ${#mystring}"
string length: 23
jcomeau@intrepid:~$ echo -n "lengths of words: "; i=0; for token in $mystring; do echo -n "${#token} "; i=$((i+1)); done; echo; echo "Word count: $i"
lengths of words: 3 3 5 4 4
Word count: 5
jcomeau@intrepid:~$ echo -n "maximum string length: "; maxlen=0; for token in $mystring; do if [ ${#token} -gt $maxlen ]; then maxlen=${#token}; fi; done; echo $maxlen
maximum string length: 5
echo $mystring | wc -w
または
echo $mystring | wc --words
あなたのために単語カウントを行います。
各Wordをwcにパイプできます。
echo $token | wc -m
結果を変数に保存するには:
mycount=`echo $token | wc -m`
echo $mycount
wordごとに合計を追加するには、次の構文で計算します。
total=0
#start of your loop
total=$((total+mycount))
#end of your loop
echo $total
string="i am a string"
n=$(echo $string | wc -w )
echo $n
4
Nの値は、式で整数として使用できます
eg.
echo $((n+1))
5
#!/bin/bash
mystring="one two three test five"
for token in $mystring; do
echo -n "$token: ";
echo -n $token | wc -m;
done
echo "--------------------------";
echo -n "Total words: ";
echo "$mystring" | wc -w;
echo -n "Total chars: ";
echo "$mystring" | wc -m;
あなたはとても近いです。 bashでは、#
を使用して変数の長さを取得できます。
また、bash
インタープリターを使用する場合は、bash
の代わりにsh
を使用し、最初の行は次のようになります-
#!/bin/bash
このスクリプトを使用-
#!/bin/bash
mystring="one two three test five"
for token in $mystring
do
if [ $token = "one" ]
then
echo ${#token}
Elif [ $token = "two" ]
then
echo ${#token}
Elif [ $token = "three" ]
then
echo ${#token}
Elif [ $token = "test" ]
then
echo ${#token}
Elif [ $token = "five" ]
then
echo ${#token}
fi
done
wc
コマンドをお勧めします。
$ echo "one two three four five" | wc
1 5 24
結果は、行数、単語数、文字数です。スクリプトで:
#!/bin/sh
mystring="one two three four five"
read lines words chars <<< `wc <<< $mystring`
echo "lines: $lines"
echo "words: $words"
echo "chars: $chars"
echo -n "Word lengths:"
declare -i nonspace=0
declare -i longest=0
for Word in $mystring; do
echo -n " ${#Word}"
nonspace+=${#Word}"
if [[ ${#Word} -gt $longest ]]; then
longest=${#Word}
fi
done
echo ""
echo "nonspace chars: $nonspace"
echo "longest Word: $longest chars"
declare
ビルトインは変数を整数としてここにキャストするため、+=
は追加ではなく追加します。
$ ./doit
lines: 1
words: 5
chars: 24
Word lengths: 3 3 5 4 4
nonspace chars: 19
コード
var=(one two three)
length=${#var[@]}
echo $length
出力
3