基本的な文字列操作

ShellShellBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、シェルスクリプトにおける基本的な文字列操作について学びます。文字列操作は、さまざまなスクリプト処理でテキストからデータを操作して抽出するために不可欠です。文字列の長さを決定したり、文字の位置を見つけたり、部分文字列を抽出したり、文字列の一部を置き換えたりするなどの概念を探求します。これらのスキルは、シェルスクリプトにおける効果的なテキスト処理にとって重要です。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) shell(("Shell")) -.-> shell/AdvancedScriptingConceptsGroup(["Advanced Scripting Concepts"]) shell(("Shell")) -.-> shell/BasicSyntaxandStructureGroup(["Basic Syntax and Structure"]) shell(("Shell")) -.-> shell/VariableHandlingGroup(["Variable Handling"]) shell/BasicSyntaxandStructureGroup -.-> shell/shebang("Shebang") shell/BasicSyntaxandStructureGroup -.-> shell/comments("Comments") shell/BasicSyntaxandStructureGroup -.-> shell/quoting("Quoting Mechanisms") shell/VariableHandlingGroup -.-> shell/variables_decl("Variable Declaration") shell/VariableHandlingGroup -.-> shell/variables_usage("Variable Usage") shell/VariableHandlingGroup -.-> shell/str_manipulation("String Manipulation") linux/BasicFileOperationsGroup -.-> linux/touch("File Creating/Updating") shell/VariableHandlingGroup -.-> shell/param_expansion("Parameter Expansion") shell/AdvancedScriptingConceptsGroup -.-> shell/cmd_substitution("Command Substitution") subgraph Lab Skills shell/shebang -.-> lab-388814{{"基本的な文字列操作"}} shell/comments -.-> lab-388814{{"基本的な文字列操作"}} shell/quoting -.-> lab-388814{{"基本的な文字列操作"}} shell/variables_decl -.-> lab-388814{{"基本的な文字列操作"}} shell/variables_usage -.-> lab-388814{{"基本的な文字列操作"}} shell/str_manipulation -.-> lab-388814{{"基本的な文字列操作"}} linux/touch -.-> lab-388814{{"基本的な文字列操作"}} shell/param_expansion -.-> lab-388814{{"基本的な文字列操作"}} shell/cmd_substitution -.-> lab-388814{{"基本的な文字列操作"}} end

スクリプトファイルの作成

文字列操作を記述するスクリプトファイルを作成して始めましょう。

  1. WebIDE内のターミナルを開きます。ターミナルでは、Linuxシステムと対話するためのコマンドを入力します。

  2. プロジェクトディレクトリに移動します。

    cd ~/project

    このコマンドは、現在のディレクトリを ~/project に変更します。~ 記号はホームディレクトリを表すため、~/project はホームディレクトリ内にある「project」という名前のフォルダです。

  3. string_operations.sh という名前の新しいファイルを作成します。

    touch string_operations.sh

    touch コマンドは新しい空のファイルを作成します。既にファイルが存在する場合は、ファイルのタイムスタンプを更新します。

  4. WebIDEエディタでファイルを開きます。WebIDEの左側のファイルエクスプローラーでファイル名をクリックすることで行えます。

  5. ファイルの先頭に次のシェバン行を追加して、インタプリタを指定します。

    #!/bin/bash

    この行は「シェバン」と呼ばれ、システムにこのスクリプトを解釈するためにBashシェルを使用するように指示します。これは常にシェルスクリプトの最初の行になります。

文字列の長さ

次に、文字列の長さを決定する方法を学びましょう。

  1. string_operations.sh ファイルに次のコードを追加します。

    echo "Step 2: String Length"
    
    STRING="Hello, World!"
    LENGTH=${#STRING}
    
    echo "The string is: $STRING"
    echo "Its length is: $LENGTH"

    これを分解してみましょう。

    • 変数 STRING を定義し、それに "Hello, World!" という値を割り当てます。
    • ${#STRING} は、STRING 変数に格納されている文字列の長さを計算する特殊な構文です。
    • この長さを LENGTH 変数に格納します。
    • 最後に、文字列とその長さの両方を出力します。
  2. ファイルを保存します。ほとんどのエディタでは、Ctrl+S(Macの場合はCmd+S)を押すことで行えます。

  3. スクリプトを実行可能にします。

    chmod +x string_operations.sh

    このコマンドは、ファイルの実行権限を変更して実行可能にします。chmod は「モードを変更する」を意味し、+x は「実行権限を追加する」を意味します。

  4. スクリプトを実行します。

    ./string_operations.sh

    ./ は、シェルに対して現在のディレクトリからスクリプトを探すように指示します。

次のような出力が表示されるはずです。

Step 2: String Length
The string is: Hello, World!
Its length is: 13

この出力が表示されない場合は、ファイルを保存して実行可能にしたことを再度確認してください。

文字の位置を見つける

次に、文字列内の文字の位置を見つける方法を学びましょう。

  1. string_operations.sh ファイルに次のコードを追加します。

    echo -e "\nStep 3: Finding Character Position"
    
    STRING="abcdefghijklmnopqrstuvwxyz"
    CHAR="j"
    
    POSITION=$(expr index "$STRING" "$CHAR")
    
    echo "The string is: $STRING"
    echo "We're looking for the character: $CHAR"
    echo "It is at position: $POSITION"

    このコードの機能は以下の通りです。

    • アルファベットを含む STRING 変数を定義します。
    • 探している文字を含む CHAR 変数を定義します。
    • expr index "$STRING" "$CHAR" は、$CHAR$STRING 内のどの位置にあるかを見つけるコマンドです。
    • $() を使ってこのコマンドの出力を POSITION 変数にキャプチャします。
    • 最後に、結果を出力します。
  2. ファイルを保存して、再度スクリプトを実行します。

    ./string_operations.sh

次のような追加の出力が表示されるはずです。

Step 3: Finding Character Position
The string is: abcdefghijklmnopqrstuvwxyz
We're looking for the character: j
It is at position: 10

位置は1から始まります。つまり、最初の文字は位置1にあり、0ではありません。

部分文字列の抽出

次に、文字列の一部を抽出する方法を学びましょう。

  1. string_operations.sh ファイルに次のコードを追加します。

    echo -e "\nStep 4: Substring Extraction"
    
    STRING="The quick brown fox jumps over the lazy dog"
    START=10
    LENGTH=5
    
    SUBSTRING=${STRING:$START:$LENGTH}
    
    echo "The original string is: $STRING"
    echo "Extracting 5 characters starting from position 10:"
    echo "The substring is: $SUBSTRING"

    これを分解してみましょう。

    • サンプル文を含む STRING 変数を定義します。
    • START は抽出を開始する位置です(ここでは0から始まります)。
    • LENGTH は抽出する文字数です。
    • ${STRING:$START:$LENGTH} は部分文字列を抽出する構文です。つまり、「STRING から、位置 START から始めて LENGTH 文字を取り出す」という意味です。
    • この部分文字列を SUBSTRING 変数に格納してからすべてを出力します。
  2. ファイルを保存して、再度スクリプトを実行します。

    ./string_operations.sh

次のような追加の出力が表示されるはずです。

Step 4: Substring Extraction
The original string is: The quick brown fox jumps over the lazy dog
Extracting 5 characters starting from position 10:
The substring is: brown

expr index コマンドとは異なり、ここでの文字列の位置は0から始まり、1ではありません。これが、位置10から始めて "brown" が得られる理由です。

文字列の置換

最後に、文字列の一部を置換する方法を学びましょう。

  1. string_operations.sh ファイルに次のコードを追加します。

    echo -e "\nStep 5: String Replacement"
    
    STRING="The quick brown fox jumps over the lazy dog"
    echo "Original string: $STRING"
    
    ## 'o' の最初の出現を 'O' に置換する
    NEW_STRING=${STRING/o/O}
    echo "Replacing first 'o' with 'O': $NEW_STRING"
    
    ## 'o' のすべての出現を 'O' に置換する
    NEW_STRING=${STRING//o/O}
    echo "Replacing all 'o' with 'O': $NEW_STRING"
    
    ## 文字列の先頭に 'quick' がある場合、'slow' に置換する
    NEW_STRING=${STRING/#quick/slow}
    echo "Replacing 'quick' with'slow' at the beginning: $NEW_STRING"
    
    ## 文字列の末尾に 'dog' がある場合、'cat' に置換する
    NEW_STRING=${STRING/%dog/cat}
    echo "Replacing 'dog' with 'cat' at the end: $NEW_STRING"

    このコードはさまざまな文字列置換技術を示しています。

    • ${STRING/o/O} は、'o' の最初の出現を 'O' に置換します。
    • ${STRING//o/O} は、'o' のすべての出現を 'O' に置換します。
    • ${STRING/#quick/slow} は、'quick' を'slow' に置換しますが、文字列の先頭に 'quick' がある場合のみです。
    • ${STRING/%dog/cat} は、'dog' を 'cat' に置換しますが、文字列の末尾に 'dog' がある場合のみです。
  2. ファイルを保存して、再度スクリプトを実行します。

    ./string_operations.sh

次のような追加の出力が表示されるはずです。

Step 5: String Replacement
Original string: The quick brown fox jumps over the lazy dog
Replacing first 'o' with 'O': The quick brOwn fox jumps over the lazy dog
Replacing all 'o' with 'O': The quick brOwn fOx jumps Over the lazy dOg
Replacing 'quick' with'slow' at the beginning: The quick brown fox jumps over the lazy dog
Replacing 'dog' with 'cat' at the end: The quick brown fox jumps over the lazy cat

各置換操作が文字列にどのように影響するかに注目してください。

まとめ

この実験では、シェルスクリプトにおけるいくつかの基本的な文字列操作を学び、練習しました。

  1. シェルスクリプトの作成と実行
  2. 文字列の長さの計算
  3. 文字列内の文字の位置の検索
  4. より長い文字列から部分文字列を抽出する
  5. さまざまな文字列置換操作を行う

これらのスキルは、シェルスクリプトにおけるより複雑なテキスト処理タスクの基礎を形成します。シェルスクリプトを使い続けるうちに、これらの文字列操作がプロジェクト内のテキストデータを操作し分析する際に非常に役立つことがわかります。覚えておいてください、これらの概念をマスターする鍵は練習です。だから、さまざまな文字列を使って操作を試してみることをためらわないでください!