Bash で部分文字列を抽出する

Fumbani Banda 2023年1月30日
  1. Bash で cut コマンドを使って部分文字列を抽出する
  2. Bash でサブストリング拡張を使用して部分文字列を抽出する
  3. IFS を使用して Bash の部分文字列を抽出する
Bash で部分文字列を抽出する

このチュートリアルでは、cut コマンド、サブストリング拡張、および内部フィールドセパレーター(IFS)を使用して bash でサブストリングを抽出するさまざまな方法を示します。

Bash で cut コマンドを使って部分文字列を抽出する

以下のスクリプトは、cut コマンドを使用してサブストリングを抽出します。-d オプションは、文字列をフィールドに分割するために使用する区切り文字を指定し、-f オプションは、抽出するフィールドの番号を設定します。

この場合、文字列は区切り文字として _ を使用して分割され、3 番目のフィールドにアクセスするには、引数 3-f オプションに渡します。

#!/bin/bash

printf "Script to extract a substring!\n\n"

numbers='one_two_three_four_five'

printf "full string: $numbers\n"

substring=$(echo $numbers | cut -d '_' -f 3)
printf "substring: $substring\n"

次のように bash スクリプトを実行します。

bash substring.sh

出力から、文字列 one_two_three_four_five からサブ文字列 three が抽出されました。

Script to extract a substring!

full string: one_two_three_four_five
substring: three

Bash でサブストリング拡張を使用して部分文字列を抽出する

サブストリング拡張は、組み込みの bash 機能です。次の構文を使用します。

$(variable:offset:length)

variables は、文字列を含む変数名です。offset は、文字列の抽出を開始する位置を指定するために使用されます。length は、offset を除いて、抽出される文字の範囲を指定するために使用されます。

以下のスクリプトは、変数名を numbers に設定し、offset4 に設定し、抽出される文字列の length3 に設定します。

#!/bin/bash

printf "Script to extract a substring!\n\n"

numbers='one_two_three_four_five'
substring=${numbers:4:3}

printf "full string: $numbers\n"
printf "substring: $substring\n"

次のように bash スクリプトを実行します。

bash substring.sh

出力から、文字列 one_two_three_four_five からサブ文字列 two が抽出されました。

Script to extract a substring!

full string: one_two_three_four_five
substring: two

IFS を使用して Bash の部分文字列を抽出する

IFSInternal Field Separator の略です。IFS は、拡張後の単語分割、および組み込みの読み取りコマンドを使用して行を単語に分割するために使用されます。

以下のスクリプトでは、IFS は _ に設定されています。これは、区切り文字として _ を使用して、変数 numbers の文字列を分割する必要があることを意味します。文字列が分割されると、構文 $[integer] を使用して単語にアクセスできます。最初の単語には $1、2 番目の単語には $2、3 番目の単語には $3 というようにアクセスできます。

#!/bin/bash

printf "Script to extract a substring!\n\n"

numbers='one_two_three_four_five'
IFS="_"
set $numbers

printf "full string: $numbers\n"
printf "substring: $2\n"

次のように bash スクリプトを実行します。

bash substring.sh

出力から、文字列 one_two_three_four_five からサブ文字列 two が抽出されました。

Script to extract a substring!

full string: one_two_three_four_five
substring: two
著者: Fumbani Banda
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub

関連記事 - Bash String