GNU/Linux >> Linux の 問題 >  >> Linux

35Bashスクリプトの例

Bashスクリプトプログラミングは一連の実行可能コマンドであり、一度に多数のコマンドを実行し、タスクのパフォーマンスを自動化し、管理タスクをカスタマイズします。一般に、すべてのLinuxユーザーは、bashスクリプトプログラミングの重要性から、bashスクリプトプログラミングの基本的な知識に精通している必要があります。

コマンドラインとの効果的な相互作用は、bashスクリプトが提供する重要な側面の1つです。これは、ユーザーが実行可能コマンドを効率的に実行できることを意味します。これにより、タスクを手動で実行する必要があるというストレスが軽減されます。

35のBashスクリプトの例

この記事では、bashスクリプトを開始するために知っておく必要のあるコアの基本について説明します。 35個のBashスクリプトの例を見てみましょう:

1。最初のBashプログラム

bashファイルを起動して実行するには、ターミナルコマンドを実行して実行する必要があります。たとえば、ターミナルで「Hello World」を実行すると、出力は「HelloWorld」になります。

bashファイルを作成するには、オペレーティングシステムにインストールされている任意のテキストエディタを使用できます。この場合、ファイルの作成にはnanoエディターを使用します。ファイルに「First.sh」という名前を付けましょう。次のコマンドを使用してコマンドを実行します。

nano First.sh

ファイルを保存する前に、次のbashスクリプトをファイルに追加してください。

   #!/bin/bash
   echo “Hello World”

bashコマンドを実行するにはさまざまな方法があります。たとえば、以下はbashを実行する2つの異なる例です。

./First.sh

または、以下のコマンドを実行することもできます:

chmod a+x First.sh
./First.sh

2。エコーコマンド

echoコマンドには、選択するための多数のオプションがあります。たとえば、他のオプションなしで「echo」コマンドを使用すると、デフォルトで改行が追加されます。または、「-n」を使用して、改行なしで任意のテキストを印刷できます。 「-e」コマンドを使用して、指定された出力から円記号を削除します。これを示すために、「echo_example.sh」という名前のbashファイルを作成します。その後、以下のスクリプトを追加します

#!/bin/bash
Echo “printing text with newline”
Echo -n “printing text without newline”
Echo -e “\nRemoving \t backslash \t characters\

スクリプトを追加したら、次のコマンドでファイルを実行します。

bash echo_example.sh

3。コメントの使用

コメントを使用するときは、「#」記号を使用して、bashスクリプトに1行のコメントを追加します。ここでは、「comment_example」などの単純な名前で新しいファイルを作成します。以下に示す例のように、コメントを1つ含むスクリプトを含めます。

#!/bin /bash
# Add two values
((sum 30+20))
#thereafter print the result
echo $sum

bashコマンドラインでファイルを実行する

4。複数行のコメント

bashでは、複数行のコメントはさまざまな方法で適用できます。これを証明するには、「multiline-comment example.sh」という名前の新しいbashを作成し、その後に「:」および「」スクリプト記号を追加して、スクリプトに複数行コメントを追加します。次の例では、2の平方根を実行します。

#!bin/bash
: ‘
The script written below is used to calculate the square of 2
‘
((area=2*2))
echo$area
execute the file with bash command-line

bash multiline-comment-example.sh

5。 Whileループ

このbashスクリプトを簡単に理解できるように、「while_sample.sh」という名前のファイルを作成します。 whileループは、プロセスを終了する前に5回繰り返されます。ループ中、count変数は、ループが停止する5回目まで、すべてのステップでカウントを1ずつ増やします。

#!/bin/bash
valid=True
count=1
while [$valid ]
do
echo $count
if [$count -eq 5 ];
then break
fi
((count++))
done

bashコマンドラインでファイルを実行する

bash while_example.sh

6。 Forループ

次のforループの例を見てください。 「for_sample.sh」という名前のファイルを作成したら、「forloop」を使用してスクリプトを追加します。このプロセスは12回繰り返されます。その後、以下に示すように、フィールドが1行で表示されます。

#!/bin/bash
for (( counter=10; counter>0; counter-- ))
do
echo -n "$counter "
done
printf "\n"

以下のコードを実行してコマンドを実行します

bash for_sample.sh

7。ユーザー入力を取得

bashからユーザー入力を取得するには、「read」コマンドを使用します。期待される結果を達成するには、以下の簡単な手順に従ってください。まず、「user_feedin.sh」という名前のファイルを作成し、以下のスクリプトを含めてユーザー入力を取得します。 1つの値が取得され、他の文字列値を組み合わせて表示されます。以下に示すように、

#!/bin/bash
echo "Enter Your Name"
read name
echo "Welcome $name to FossLinux"

bashコマンドラインでファイルを実行する

bash user_feedin.sh

8。 Ifステートメント

ifステートメントは、複数の条件と単一の条件の両方で使用されます。 「if」と「fi」の定義は、ifステートメントの前後で使用されます。 bashのifステートメントを簡単に理解するために、例を使用します。 「example_if.sh」という名前のファイルを作成します。

たとえば、数値4には変数「s」が割り当てられます。数値が2で割り切れる場合、出力は「2で割り切れる」になります。それ以外の場合、数値が2で割り切れない場合、結果は「2で割り切れない」になります。この場合の「-lt」は、比較のために使用されます。もう1つの比較機能は「-eq」です。一方、「-ne」は不等式を示すために使用され、「-gt」はbashスクリプトで値がより重要であるかどうかを示します。

#!/bin/bash
s=4
if [ $s / 2 ];
then
echo "It is not divisible by 2"
else
echo "It is divisible by 2"
fi

bashコマンドラインでファイルを実行する

bash example_if.sh

9。 ANDロジックと一緒にifステートメントを使用する

2つ以上の条件がある場合は常に、ifステートメントでさまざまな論理条件を使用できます。次の例は、ifステートメントで複数の条件を定義する際にロジック「AND」がどのように使用されるかを示しています。 「&&」記号は、bashスクリプトの「AND」ロジックを表します。 「if_plus_AND.sh」という名前のファイルを作成します。

この例では、ユーザーが入力したユーザー名とパスワードの変数が「main」および「users」ディレクトリと比較され、一致するかどうかが確認されます。実行すると、プロセスは成功し、「valid-user」が出力として表示されます。それ以外の場合、それらが一致しない場合、結果は「無効なユーザー」になります。

!/bin/bash
echo "input username"
read username
echo "input password"
read password
if [[ ( $username == "main" && $password == "users" ) ]]; then
echo "valid user"
else
echo "invalid user"
fi

bashコマンドラインを使用してファイルを実行します

bash if_plus_AND.sh

最初の例は、ユーザーが提供したものがメインフィールドと一致しないため、認証が失敗したことを示しています。

2番目の例は、提供されたフィールドがメインフィールドと一致したため、認証が成功したことを示しています。

10。 ORロジックでifステートメントを使用する

if関数でORを使用する場合、「||」記号が使用されます。これを示すために、「if_with_OR.sh」という名前のファイルを作成して、IFステートメントでのORロジックの使用を確認します。 2つの数値(10または40)に割り当てられている値「s」のインスタンスを取り上げます。ユーザーが指定された数値のいずれかを入力すると、システムの出力は「よく再生されました」になります。それ以外の場合、表示される結果は「申し訳ありませんが、失敗しました」になります。この例を調べると、sの値がユーザーから生成されていることがわかります。

#!/bin/bash

echo "Enter any number"
read s

if [[ ( $s -eq 10 || $n -eq 40 ) ]]
then
echo "Well Played"
else
echo "Sorry, You Failed"
fi
>

bashコマンドラインでファイルを実行する

bash if_with_OR.sh
As indicated in the example above, 5 is not equal to 10 or 40. Therefore, the output displays “Sorry, You Failed,”

上の図では、ユーザーは任意の数字を入力するように求められ、10を選択しました。10==10であるため、出力は「よく再生されました」です。

11。 elseifステートメントの使用

選択したプログラミング言語に関係なく、多くの条件文はほぼ同じです。ただし、bashプログラミングでは、「elseif」条件の使用は多少異なります。 bashでは、elseif条件の代わりにElifが使用されます。 「elseif_instance.sh」という名前のファイルを作成してから、デモ用にbashスクリプトを追加します。

echo "Enter your lucky number"
read n

if [ $n -eq 50 ];
then
echo "You won the 1st bravo!!!!"
elif [ $n -eq 100 ];
then
echo "You won the 2nd congrats!!!!"
elif [ $n -eq 500 ];
then
echo "You won the 3rd congrats!!!!"

else
echo "Sorry, you have to keep trying pal"
fi

bashコマンドラインでファイルを実行する

Bash elseif_instance.sh

上記の実行は、bashによって実行された3つのインスタンスを表示します。

12。ケースステートメント

「if-elseif-else」ステートメントについて聞いたことがありますか?そうでない場合でも、ここで説明しますので、心配しないでください。 Caseステートメントは、if-elseif-elseステートメントの代わりに使用されます。 「case」と「esac」は、このステートメントを使用している間、それぞれ開始ブロックと終了ブロックを示します。さらに詳しく説明すると、例が非常に役立ちます。 「case_example.sh」という名前のファイルを作成します。その後、以下のスクリプトを含めます。次に、出力を見て、前の出力と比較します。 caseステートメントとif-elseif-elseステートメントの両方の結果が同じであることに気付くでしょう。

#!/bin/bash

echo "Input your Lucky Number"
read s
case $s in
50)
echo echo "You won the 1st bravo!!!!" ;;
100)
echo "You won the 2nd congrats!!!!" ;;
500)
echo "You won the 3rd congrats" ;;
*)
echo "Sorry, you have to keep trying pal" ;;
esac

bashコマンドラインでファイルを実行する

bash case_example.sh

13。コマンドラインから引数を取得する

Bashスクリプトは、他のプログラミング言語がコマンドラインから入力を取得する方法をエミュレートできます。変数$1と$3を使用して、それぞれ1番目と3番目のコマンドライン引数を暗号化するインスタンスを見てください。さらに詳しく説明するために、「command-line.sh」という名前のファイルを作成し、以下のスクリプトを含めましょう。最終的に、与えられた出力は、スクリプトによって読み取られた引数の総数の出力です。

#!/bin/bash
echo "Total arguments : $#"
echo "1st Argument = $1"
echo "3rd argument = $3"

bashコマンドラインでファイルを実行する

bash command_line.sh Foss Linux Website

14。名前を使用してコマンドラインから引数を取得する

このセクションでは、名前を含むコマンドライン引数を読み取る方法を示します。これを行うには、「command_line_names.sh」という名前のファイルを作成します。その後、スクリプトによって読み取られるA、Bの2つの引数を持つコードを追加し、AとBの合計を計算します。

#!/bin/bash
for arg in "$@"
do
index=$(echo $arg | cut -f1 -d=)
val=$(echo $arg | cut -f2 -d=)
case $index in
A) a=$val;;
B) b=$val;;
*)
esac
done
((result=a+b))
echo "A+B=$result"

bashコマンドで実行します。以下のコードは、2つのコマンドライン引数を組み合わせたものです。

bash command_line_names.sh A=10 B=16

15。統合された文字列変数

Bashには、プログラマーがタスクを迅速に実行するのに役立ついくつかの重要な利点があります。文字列変数の統合は、2つ以上の変数の組み合わせです。これを示すために、「string_combination.sh」という名前のファイルを作成します。その後、以下に示すスクリプトを追加し、「+」演算子を使用して変数をまとめて文字列変数を統合する方法を確認します。

#!/bin/bash

stringA="Foss"
stringB="Linux"
echo "$stringA$stringB"
stringC=$stringA+$stringB
stringC+=" has the best online tutorials"
echo $stringC

があります

bashコマンドラインでファイルを実行する

bash string_combination.sh

16。文字列の部分文字列を取得する方法

Bashには、他のプログラミング言語と同様に、データ文字列から値を切り捨てる組み込み関数がありません。ただし、bashを使用すると、以下のスクリプトに示すように、部分文字列の切り捨てを別の方法で実行できます。 「substring_example.sh」という名前のファイルを作成します。この場合、値7は部分文字列の突出点を示し、6は部分文字列の全長を示します。

#!/bin/bash
Str="Get connected to FossLinux blogsite"
subStr=${Str:4:9}
echo $subStr

bashコマンドによる実行

bash substring_example.sh

17。 2つの数字の加算

Bashは、さまざまで複雑な方法で算術演算をサポートします。 bashの複雑な利点を表示するには、以下に示すように、二重角かっこを使用して2つの整数の合計を計算します。まず、以下のコードを使用して「sum_numbers.sh」という名前のファイルを作成します。この関数は、ユーザーに最初の桁、次に2番目の桁を入力し、最後に結果を出力するように求めます。これにより、ユーザーの2つの整数が計算されます。

#!/bin/bash
echo "input first digit 1"
read a
echo "input digit 2"
read b
(( sum=a+b ))
echo "Result=$sum"

bashコマンドラインでファイルを実行する

bash sum_numbers.sh

18。関数の作成

Bashスクリプトを使用すると、ユーザーは関数を作成して同じ関数を呼び出すことができます。これは、以下の例で示されています。 「function_example.sh」という名前のファイルを作成し、サンプルにコードの概要を入力します。ここでは、bashスクリプトブラケットの種類を指定せずに、名前でランダムに関数を選択します。

#!/bin/bash
function x()
{
echo 'I love fosslinux'
}

x

以下のコマンドラインを使用してファイルを実行します;

bash function_example.sh

19。パラメータを使用した機能の作成

bashプログラミングでは、他の変数を使用して関数内のパラメーターを使用できます。 2つの値が関数と同時に呼び出されて値が読み取られる場合は、最初の値$1と2番目の値$2を呼び出します。これを確認するには、「function_parameter.sh」という名前のファイルを作成します。与えられたパラメータを使用して、長方形「Rectangle_Area」の面積を見つけましょう。

#!/bin/bash

Rectangle_Area() {
area=$(($1 * $2))
echo "Area is : $area"
}

Rectangle_Area 15 25

bashコマンドでファイルを実行します。

bash function_parameter.sh

20。関数からの戻り値の受け渡し

bashプログラミングで戻り値を処理する場合、bashには数値と文字列値の受け渡しを可能にする組み込み関数があります。次の例は、関数での文字列値の受け渡しを示しています。 「function_return.sh」という名前のファイルを作成し、理解しやすいように以下のコードを含めます。関数grow()は文字列値を変数に返し、後で統合された文字列の結果を出力します。

#!/bin/bash
function greeting() {

str="Goodmorning, $fname"
echo $str

}

echo "Input your fname"
read fname

val=$(greeting)
echo "Return value of the function is $val"

bashコマンドラインでファイルを実行する

bash function_return.sh

21。ディレクトリを作成する

「mkdir」は、新しいディレクトリを作成するために使用されるコマンドです。このコマンドは「ディレクトリの作成」を意味します。 「make_directory.sh」という名前のファイルを作成します。その後、新しいディレクトリを作成するコードを入力します。 Bashはあなたのために新しいディレクトリを作成します。

#!/bin/bash
echo "Input a new directory name"
read newdir
`mkdir $newdir`

bashコマンドラインでファイルを実行する

bash make_directory.sh

22。ディレクトリの存在を確認して作成する

「-d」は、ユーザーが現在のコンピューターの場所にある既存のディレクトリを確認するのに役立つコマンドです。これにより、ディレクトリが存在するかどうかわからない場合に「mkdir」コマンドを実行できなくなります。デモンストレーションのために、「directory_exists.sh」という名前のファイルを作成し、以下に記述されているコードを追加して、ディレクトリが存在することを確認します。

#!/bin/bash
echo "New directory name input"
read ndir
if [ -d "$ndir" ]
then
echo "The Directory given exists"
else
`mkdir $ndir`echo "Directory created"
fi

bashコマンドによる実行。

Bash directory_exists.sh

23。ファイルの読み取り

Bashには、ユーザーが任意のファイルを読み取るのに役立つループ機能があります。ここでは、理解してもらうための最も簡単な方法を紹介します。これを行うには、「read_file.sh」という名前のサンプルファイルを作成し、以下のコードを追加して、「langeages.txt」という名前の既存のファイルを特定します。

#!/bin/bash
file='languages.txt'
while read line; do
echo $line
done < $file

bashコマンドラインでファイルを実行する

bash read_file.sh

language.txtの元のコンテンツを確認するには、以下のコマンドを実行します。

cat languages.txt

24。ファイルの削除

bashプログラミングでは、「rm」コマンドを使用してファイルを削除または削除します。 「rm」コマンドを使用してファイルを削除します。まず、「delete_file.sh」という名前のファイルを作成します。その後、以下で強調表示されているコードを使用して、最初のユーザーのファイル名を作成し、削除します。 「-i」コマンドは、ユーザーがファイルを削除できるので便利です。

#!/bin/bash
echo "Insert a filename to delete"
read filename
rm -i $filename

bashコマンドラインでファイルを実行します。

bash delete_file.sh

25。ファイルに追加または追加する

既存のファイルの場合、bashには「>>」演算子があり、ファイルに新しいデータを追加できます。これをテストするには、「add_file.sh」という名前のファイルを作成します。次に、現在のファイルの最後にデータを追加するコードを追加します。 bashスクリプトを実行した後、次の文字列「studyingangular」を「languages.txt」ファイルに追加します。

#!/bin/bash

echo "Before adding the file"
cat languages.txt

echo "Studying angular">> languages.txt
echo "After adding the file"
cat languages.txt

bashコマンドによる実行。

bash add_file.sh

26。テストファイルの存在

Bashには、ユーザーフレンドリーにする優れたユーザー機能があります。このセクションでは、特定のファイルが存在するかどうかを確認するオプションを提供する機能について説明します。 「-e」または「-f」コマンドは、ファイルが存在するかどうかを確認するのに役立ちます。これをテストするには、「file_exist.sh」という名前のファイルを作成してから、以下のコードを追加します。このテストでは、ファイル名はコマンドラインから渡されます。

#!/bin/bash
filename=$1
if [ -f "$filename" ]; then
echo "File exists"
else
echo "File does not exist"
fi

以下に表示されるコマンドを実行して、ファイルの存在を確認します。この例では、languages.txtファイルが使用可能ですが、languages1.txtファイルは存在しません。

ls
bash file_exist.sh languages.txt
bash file_exist.sh languages1.txt

これらのコマンドは、検索対象のファイルが存在するかどうかを確認するために使用されます。たとえば、この例では、languages.txtファイルは存在しますが、languages1.txtは存在しません。

27。メールを送信

bashスクリプトの「mail」または「sendmail」コマンドは、電子メールの送信に使用されます。これらのコマンドは、必要なすべてのパッケージをインストールした後、効率的に機能します。デモンストレーションの目的で、「mail_example.sh」という名前のファイルを作成します。以下で強調表示されているコードを使用して、目的のメールを送信します。

#!/bin/bash
Recipient=”[email protected]”
Subject=”inquiries”
Message=”Need anything from fosslinux blogsite?”
`mail -s $Subject $Recipient <<< $Message`

bashコマンドでファイルを実行します。

bash mail_example.sh

28。現在の日付を解析する

Bashには、このセクションで焦点を当てる日付と時刻の値の解析を可能にする機能があります。 Bashを使用すると、「date」コマンドを使用して現在の日付と時刻を取得できます。 「S」、「d」、「M」、「m」、「Y」、および「H」は、日付と時刻の分析に使用される値です。 「date_parse.sh」という名前のファイルを作成し、月、年、日、時、分、秒の値を切り離すコードを追加します。

#!/bin/bash
Year=`date +%Y`
Month=`date +%m`
Day=`date +%d`
Hour=`date +%H`
Minute=`date +%M`
Second=`date +%S`
echo `date`
echo "Current Date is: $Day-$Month-$Year"
echo "Current Time is: $Hour:$Minute:$Second"

bashコマンドでファイルを実行します。

bash date_parse.sh

29。待機コマンド

Linux OSには、特定の割り当てられたタスクを完了するために固有のIDを使用して、実行中のプロセスが完了するのを待つ組み込みのコマンド機能があります。したがって、ジョブIDがない場合、waitコマンドは、すべての2次サイクルが完了するのを待ってから、終了に戻ります。 「wait_example.sh」という名前のファイルを作成し、実行するために以下のスクリプトを追加します。

#!/bin/bash
echo "Waiting command" &
process_id=$!
wait $process_id
echo "Exited with status $?"

bashコマンドを使用してファイルを実行します。

bash wait_example.sh

30。スリープコマンド

sleepコマンドは、ユーザーが進行中のタスクを指定された期間一時停止するのに役立ちます。これにより、数時間、数分、数秒、または数日間の遅延または停止/一時停止が可能になります。説明のために、ファイルを作成して「sleep_examples.sh」という名前を付けてから、以下に示すスクリプトを実行します。

この例は、実行後約8秒間タスクを遅らせることを目的としています。

#!/bin/bash
echo “Please be patient for 8 seconds”
sleep 8
echo “Completed”

bashコマンドを使用してファイルを実行します

bash sleep_examples.sh

31。 AND演算子

この演算子を使用すると、システムは複数の条件が満たされているかどうかを確認できます。これは、AND演算子で区切られたすべての条件が、正しく実行されるために真でなければならないことを意味します。さらに、「&&」演算子は「AND」を表すために使用されます。これを確認するには、以下の例を確認してください。まず、「And_operator.sh」というファイルを作成し、bashコマンドラインを使用して実行します。

#!/bin/bash
echo -n "Input a Number:"
read num
if [[ ( $num -lt 20 ) && ( $num%2 -eq 0 ) ]]; then
echo "It is an Even Number"
else
echo "It is an Odd Number"
fi

bashコマンドラインを使用してファイルを実行します

bash And_operator.sh

32。 OR演算子

これは、スクリプトで複雑なロジックを作成するのに役立つ優れたbashスクリプト構造です。この構成は、オペランドの結果がtrueの場合は常にtrueを返すため、「AND」演算子とは少し異なる動作をします。一方、「or」演算子は、両方のオペランドがfalseの場合にのみfalseを返します。詳細については、以下のサンプルを確認してください。この構成について調べるには、「OR_operator.sh」という名前のファイルを作成し、コマンドラインを使用して実行を完了します。

#!/bin/bash
echo -n "Enter any number:"
read n
if [[ ( $n -eq 5 || $n -eq 30 ) ]]
then
echo "You won"
else
echo "You lost!"
fi

bashを使用したコマンドライン実行

bash OR_operator.sh

33。スイッチ構成

Switch構造は、ネストされた条件が必要な状況に適用できます。以下の例は、詳細な概要を示しています。 「switch_construct.sh」という名前のファイルを作成します。次に、bashコマンドラインを使用してファイルを実行します

#!/bin/bash

echo -n "Input a number: "
read number

case $number in
50)
echo "Fifty!!" ;;
100)
echo "Double fifty!!" ;;
*)
echo "Neither 100 nor 200" ;;
esac

bashコマンドラインを使用してファイルを実行します

bash switch_construct.sh

34。文字列の連結

高度な快適性を備えたbashを使用すると、連結文字列を簡単に実装できます。これは、以下の例によって簡略化されています。デモンストレーションの目的で、「concatenating_strings.sh」という名前のファイルを作成し、bashコマンドラインでファイルを実行します。以下のような出力が得られます。

#!/bin/bash

string1="FossLinux"
string2="Blogsite"
string=$string1$string2
echo "$string is a great resource for Linux users to find relevant tutorials."

bashコマンドでファイルを実行します

bash concatenating_strings

35。文字列のスライス

スライスストリングとは、ストリングの一部を縮小することを指します。文字列の切り捨てを提供する多くのプログラミング言語とは異なり、bashはこの機能を提供しません。以下は、私たちが話していることを垣間見るための例です。まず、「slicing_strings.sh」という名前のファイルを作成します。その後、bashコマンドラインを使用して、作成したスライスファイルを実行します。

#!/bin/bash
Str="Study smart commands with fosslinux"
subStr=${Str:0:20}
echo $subStr

上記のスクリプトの出力は「StudySmartコマンド」である必要があります。パラメータの展開は、式 {VAR_NAME:S:L)を取ります。 。この式では、Sは開始位置を示し、Lは長さを示します。

bash slicing_strings.sh

結論

この記事では、ユーザーに多様な学習範囲を提供する35のbashスクリプトの例を取り上げました。 bashスクリプトの例を含む万能の記事を探しているなら、これが究極の選択になるはずです。


Linux
  1. Bashスクリプトがエイリアスを認識しないのはなぜですか?

  2. Bashスクリプトをデバッグする方法は?

  3. バッシュ‘?

  1. Bashスクリプト:ファイルがテキストファイルかどうかを確認しますか?

  2. Sudoを介してSsh上でスクリプトファイルを実行しますか?

  3. Bash スクリプト:不適切なインタープリター

  1. ファイルを bash シェル スクリプトに含める方法

  2. bash スクリプトで md5 の合計を比較する

  3. bash スクリプトで unicode を grep する方法