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

Bash初心者シリーズ#6:Bashでの文字列操作

いくつかの文字列を操作しましょう!

bashの変数に精通している場合は、string、intなどに個別のデータ型がないことをすでにご存知でしょう。すべてが変数です。

ただし、これは文字列操作機能がないことを意味するものではありません。

前の章では、Bashで算術演算子を学びました。この章では、さまざまな文字列操作を使用して文字列を操作する方法を学習します。文字列の長さを取得する方法、文字列を連結する方法、部分文字列を抽出する方法、部分文字列を置き換える方法などを学びます。

文字列の長さを取得

文字列の長さをbashで取得することから始めましょう。

文字列は、文字のシーケンス(配列)に他なりません。 distroという名前の文字列を作成しましょう その値を「Ubuntu」に初期化します 」。

distro="Ubuntu"

ディストロ文字列の長さを取得するには、#を追加するだけです。 変数名の前。次のechoステートメントを使用できます:

[email protected]:~/scripts$ echo ${#distro}
6

echoコマンドは値を出力するためのものであることに注意してください。 {#string} 文字列の長さを与えるものです。

2つの文字列を連結する

別の文字列の最後に文字列を追加できます。このプロセスは文字列連結と呼ばれます。

実例を示すために、最初に2つの文字列 str1を作成しましょう。 およびstr2 次のように

str1="hand"
str2="book"

これで、両方の文字列を結合して、結果を str3という名前の新しい文字列に割り当てることができます。 次のように:

str3=$str1$str2

これより簡単にすることはできませんか?

部分文字列の検索


文字列内の特定の文字または単語の位置(インデックス)を見つけることができます。実例を示すために、最初に strという名前の文字列を作成しましょう 次のように:

str="Bash is Cool"

これで、部分文字列の特定の位置(インデックス)をクールに取得できます。これを行うには、exprを使用します コマンド:

[email protected]:~/scripts$ word="Cool"
[email protected]:~/scripts$ expr index "$str" "$word"
9

結果9は、 strで「Cool」という単語が始まるインデックスです。 文字列。

ifなどの条件ステートメントの使用は意図的に避けています。そうでない場合、このbash初心者シリーズでは、条件ステートメントについては後で説明します。
部分文字列の抽出

文字列から部分文字列を抽出することもできます。つまり、文字列から文字、単語、またはいくつかの単語を抽出できます。

実例を示すために、最初に fossという名前の文字列を作成しましょう 次のように:

foss="Fedora is a free operating system"

ここで、 fossの最初の単語「Fedora」を抽出するとします。 ストリング。目的の部分文字列の開始位置(インデックス)と抽出する必要のある文字数を指定する必要があります。

したがって、サブストリング「Fedora」を抽出するには、開始位置として0を使用し、開始位置から6文字を抽出します。

[email protected]:~/scripts$ echo ${foss:0:6}
Fedora

bashの配列の場合と同様に、文字列の最初の位置がゼロであることに注意してください。また、部分文字列の開始位置のみを指定し、文字数を省略できます。この場合、文字列の開始位置から終了位置まですべてが抽出されます。

たとえば、 fossからサブストリング「freeoperationingsystem」を抽出するには ストリング;開始位置12を指定するだけです:

[email protected]:~/scripts$ echo ${foss:12}
free operating system
部分文字列の置換

サブストリングを別のサブストリングに置き換えることもできます。たとえば、 fossで「Fedora」を「Ubuntu」に置き換えることができます。 次のような文字列:

[email protected]:~/scripts$ echo ${foss/Fedora/Ubuntu}
Ubuntu is a free operating system

別の例を見てみましょう。部分文字列「free」を「popular」に置き換えましょう:

[email protected]:~/scripts$ echo ${foss/free/popular}
Fedora is a popular operating system

echoコマンドで値を出力しているだけなので、元の文字列は実際には変更されません。

サブストリングの削除

サブストリングを削除することもできます。実例を示すために、最初に factという名前の文字列を作成しましょう 次のように:

fact="Sun is a big star"

文字列ファクトからサブ文字列「big」を削除できるようになりました:

[email protected]:~/scripts$ echo ${fact/big}
Sun is a star

cellという名前の別の文字列を作成しましょう:

cell="112-358-1321"

ここで、セルからすべてのダッシュを削除するとします。 ストリング;次のステートメントは、セルの最初のダッシュオカレンスのみを削除します 文字列:

[email protected]:~/scripts$ echo ${cell/-}
112358-1321

セルからすべてのダッシュオカレンスを削除するには 文字列の場合、次のようにダブルスラッシュを使用する必要があります:

[email protected]:~/scripts$ echo ${cell//-}
1123581321

エコーステートメントを使用しているため、セル文字列はそのままで変更されていないことに注意してください。目的の結果を表示しているだけです。

文字列を変更するには、次のように結果を文字列に割り当てる必要があります。

[email protected]:~/scripts$ echo $cell
112-358-1321
[email protected]:~/scripts$ cell=${cell//-}
[email protected]:~/scripts$ echo $cell
1123581321
文字列内の大文字と小文字の変換

文字列を小文字または大文字に変換することもできます。まず、 legendという名前の2つの文字列を作成しましょう および俳優:

legend="john nash"
actor="JULIA ROBERTS"

凡例のすべての文字を変換できます 文字列から大文字へ:

[email protected]:~/scripts$ echo ${legend^^}
JOHN NASH

アクター文字列内のすべての文字を小文字に変換することもできます:

[email protected]:~/scripts$ echo ${actor,,}
julia roberts

凡例の最初の文字のみを変換することもできます 次のように文字列を大文字にします:

[email protected]:~/scripts$ echo ${legend^}
John nash

同様に、アクターの最初の文字のみを変換できます 次のように文字列を小文字にします:

[email protected]:~/scripts$ echo ${actor,}
jULIA ROBERTS

文字列内の特定の文字を大文字または小文字に変更することもできます。たとえば、jの文字を変更できます およびn 凡例の大文字に 次のような文字列:

[email protected]:~/scripts$ echo ${legend^^[jn]}
JohN Nash

素晴らしい!これで、bash初心者シリーズのこのチュートリアルは終了です。以下のPDFをダウンロードして、今学んだことを実践してください。

Bash第6章練習問題この章で学んだことを練習するための問題とその解決策Bash-Chapter-6-Practice-Questions-Linux-Handbook.pdf28KB

bashスクリプトに意思決定スキルを追加する方法を学習するため、bashで文字列操作を楽しんでいただき、次の章を確認してください。


Linux
  1. Bash初心者シリーズ#9:Bashでの関数の使用

  2. Bash初心者シリーズ#8:Bashのループ

  3. ランダムを使用してbashでランダムな文字列を生成する

  1. Bashのファイルでアトミック書き込み操作を実行しますか?

  2. Bashスクリプトで文字列を分割する方法

  3. bash のテキスト文字列を配列に変換する

  1. Bash数学演算(Bash算術)の説明

  2. Bash連結文字列

  3. 「bash -c」は何をしますか?