Bashファイルの各行

Bash Each Line File



BashのForループは、複数のタスクを実行するためにさまざまなバリエーションで使用できます。そのようなバリエーションの1つは、ファイル内のすべての行の読み取りを担当するファイル内のForeach行です。この記事では、Bashのファイルの各行に使用する方法について説明します。

注:以下に示す方法は、Ubuntu20.04で実証されています。ただし、他のLinuxディストリビューションでもうまく機能します。







Bashのファイルの各行に使用する方法:

これらの方法では、ファイルから各行を読み取って、端末に表示したり、これらの行を別のファイルに保存したりできる例を示します。これらの両方の方法を見てみましょう。



方法1:端末に読み取り行を表示する場合:

ファイル内の各行を使用して端末にファイルの行を表示するには、次の手順を実行する必要があります。



ステップ1:ダミーテキストファイルの作成:

まず、デモンストレーションのために、ランダムなデータを含むテキストファイルを作成する必要があります。このテキストファイルはどこにでも作成できますが、ホームフォルダに作成することを強くお勧めします。これを行うには、以下に示す画像で強調表示されているファイルマネージャーアイコンをクリックします。





  • ダミーテキストファイルの作成

    次に、ホームフォルダ内の任意の場所を右クリックし、表示されるメニューから[新しいドキュメント]オプションを選択します。次に、[空のドキュメント]オプションを選択します。ホームフォルダに空のドキュメントが作成されたら、選択した名前に続けて.txt拡張子を付けます。この例では、ForEachLine.txtという名前を付けています。

  • ダミーテキストファイルの作成2
    このテキストファイルをダブルクリックして開き、次の画像に示すようにランダムなテキストを入力します。これを行った後、このファイルを保存して閉じます。



  • ダミーテキストファイルの作成3

    ステップ2:Bashスクリプトの作成:

    ここで、ホームフォルダーにテキストファイルを作成したのと同じ方法でBashファイルを作成しますが、今回は、名前の後に.txt拡張子の代わりに.sh拡張子を付ける必要があります。 BashファイルにForEachLine.shという名前を付けましたが、任意の名前を付けることができます。
    Bashスクリプトの作成

    このファイルをダブルクリックして開き、新しく作成したBashファイルに下の画像に示すスクリプトを入力します。ここで、最初の行は、次のスクリプトがBashスクリプトであることを示すためにあります。 Fileという名前の変数を作成し、その値としてテキストファイルの名前(ForEachLine.txt)を割り当てただけです。次に、Linesという名前の変数を作成し、それを$(cat $ File)にイコライズしました。ここで、catコマンドはテキストファイルの内容を読み取り、その前に$記号が付いている場合、このコマンドによって読み取られた内容はLines変数に格納されます。このようにして、ForEachLine.txtという名前のファイルのすべての行がLines変数に格納されます。次に、イテレータ行を持つForループを適用しました。このイテレータは、上記で作成したLines変数で機能し、すべての行を1つずつ繰り返し処理します。次に、do-doneブロックで、echoコマンドを使用して、これらすべての行を端末に表示しました。
    BashScript2の作成

    ステップ3:Bashスクリプトの実行:

    次に、Ubuntu 20.04でターミナルを起動し、その中で次のコマンドを実行して、上記で作成したBashスクリプトを実行します。
    bash ForEachLine.sh
    Bashスクリプトの実行

    このコマンドでbashスクリプトを実行すると、次の画像に示すように、ターミナルでテキストファイルのすべての行を確認できます。
    Bashスクリプトの実行

    方法2:すべての読み取り行を別のファイルに保存する場合:

    この方法では、上記の方法で作成したBashスクリプトを少し変更して、すべての読み取り行を端末に表示するのではなく、新しいテキストファイルに保存します。これを行うには、以下の手順を実行します。

    ステップ1:上で作成したBashスクリプトを変更して実行する:

    上記の方法で作成したBashスクリプトを開き、次の図に示すように変更します。 do-doneブロック内のechoコマンドの後に、>>記号の後に新しいファイル名を追加しただけです。この変更により、読み取ったすべての行が端末に表示されるのではなく、新しいテキストファイルに保存されます。次に、bashコマンドに続けてBashファイル名を指定して、ターミナルからBashスクリプトを再度実行します。今回はBashスクリプトを実行すると、この場合はNewFile.txtという名前の新しいテキストファイルが作成されます。
    上で作成したBashスクリプトを変更して実行する1

    ステップ2:新しく作成されたテキストファイルへのアクセス:

    読み取ったすべての行が新しいテキストファイルに保存されているかどうかを確認するには、ターミナルで次のコマンドを実行して、そのファイルの内容を表示するだけです。
    cat NewFile.txt
    新しく作成されたテキストファイルへのアクセス
    以下の画像に示されている出力により、読み取られたすべての行が新しいテキストファイルにコピーされたことが保証されます。
    新しく作成されたテキストファイルへのアクセス2

    結論:

    このようにして、ファイル内の各行を利用して、ファイルのすべての行を読み取り、これらの行で操作することができます。この記事では2つの基本的なシナリオについて説明しましたが、このループを使用してより複雑な問題を解決することもできます。