ウェブサイト検索

Bashで文字列から最後のx文字を削除する方法は?


Linuxには、bashで文字列の最後の文字を削除するために使用できるいくつかの方法やコマンドがあり、"cut"、"sed"、"compliment"、"awk"などが含まれます。また、"%"および"?"オペレーターを使用して、文字列から最後の要素を削除することも可能です。bashの"cut"コマンドを利用することで、削除したい特定の文字を文字列から削除することもできます。この記事では、シーケンスから要素を削除するためのさまざまな技術を紹介します。

例 # 1: Bashで文字列から最後の文字を削除する

この例では、bashのコマンドで文字列の最終文字を削除するために「%」と「?」の記号を使用します。これらの記号をコマンドで使用する前に、最初にこれらが文字列の最後の数文字を削除し、状況に応じて文字数を調整することを理解していることを確認します。削除したい内容に応じて、文字列の最後のセグメントを様々な方法で切り取ることができます。

では、文字列から最後の文字を削除するコマンドを実装し、ターミナルウィンドウに標準出力を表示することを始めましょう。キーワード変数が最初に使用され、そのリスト文字列がそれに割り当てられます。bashでは、変数は数値、特定の単語、または文字のセットを格納できます。変数は、宣言することなく、その参照に値を与えることで構築できます。変数からデータを読み取る場合は、変数名の前に記号「$」を使用する必要があります。

私たちが持っている文字列の値は「プログラミング言語が大好き」です。そのため、変数を入力した後は、二重引用符の中に文字列を追加する必要があります。このコマンドでは、スペースを空けていません。この行では、文字列は4つの単語を含んでいます。そして、このセクションでは、最後の単語「言語」を削除するつもりです。次の行では、「echo」文を使用し、続いてドル記号「$」を入力します。echoの中では、中括弧を使用し、中括弧の中に「変数」に保存されている文字列を引数として渡します。その後、記号「%」を使用して、文字列から最後の文字を削除し、続いて記号「?」を使用して、削除したい最後の文字数を指定します。したがって、この行から九文字の単語「言語」を削除します。したがって、パーセント記号の後に九つの疑問符を入力します。

Linux@linux:~$ variable=”Iloveprogramminglanguages”

Linux@linux:~$ echo ${variable%?????????}

下の画像にあるように、このコマンドを実行した後、結果は「languages」という言葉なしで表示されます。表示された文字列の値は「ILoveProgramming」という3つの単語になっており、与えられた値にはスペースがなかったため、単語の後にもスペースはありません。

さて、次のセクションでは、文字列の最初の数文字または最初の単語を記号「#」を使って取り除きます。この記号は、文字列の先頭の文字を削除するために使用されます。そこで、同じコマンドを使用します。まず、文字列「I Am Going To USA」を引用符の中に渡します。これは作成した「変数」に保存されています。次のステップでは、「echo」コマンドを使用し、その中で「$」記号を使います。

次に、中括弧を使います。この中括弧の中に文字列が保存されます。そこで、「変数」を渡し、その後にハッシュ「#」記号を使用します。その後、4つの「?」疑問符を入力します。これは文字列から最初の4文字を削除します。ここでは、スペースも文字としてカウントされます。

Linux@linux:~$ variable=”I Am Going To USA”

Linux@linux:~$ echo ${variable#????}

文字列の最初の2つの単語「I Am」が削除されたので、出力にはフレーズ「Going to USA」の残りの3つの単語が表示されています。上記の出力では4つの質問マークを使用しているのは、これら2つの単語の間にスペースがあり、その文脈ではスペースも文字として扱われるためです。したがって、削除された合計の文字数は4です。

例 # 2: Bashのパラメータ置換を使用して文字列の最後の文字を削除する。

このセクションでは、bashで文字列から最後の単語を削除する方法を、文字列の長さを指定して説明します。「#」演算子を使用して文字列の長さを求めることができます。そのためには、まず変数名を引用符で囲んでから「#」演算子を使用して文字列の長さを求める必要があります。したがって、Unixでは「#」演算子を使用して文字列変数の長さを確認できます。

さて、コマンドでは、最初に作成された「変数」を使用し、二重引用符の中にある文字列の値「Keep it up」を渡します。その値には合計で三つの単語があります。次の行では、パラメーター「length」を渡し、「variable」に引数を格納します。この「variable」には文字列の値が格納されていますが、「variable」を渡す前に、波括弧を使う前に「$」を使用し、この括弧の中で「#」演算子を使用する必要があります。

次に、次の行で「echo」というコマンドをタイプし、その後にドル記号($)、波括弧、パラメータ「variable」、二重コロン(「::」)、引数の長さ、そして消去する必要がある文字数、すなわち2つを「-2」という記号の形で入力します。

Linux@linux:~$ variable=”Keep it up”

Linux@linux:~$ length= ${#variable#}

Linux@linux:~$ echo ${variable: : length -2}

私たちは文字の長さを2に設定したため、文字列から最後の2文字が削除され、表示された出力には文字列値「Keep it」が含まれていました。

例 # 3: カットコマンドの利用

Bashでは、cutコマンドを使用して文字列やファイルから特定の単語や文字を削除できます。これを実行するためにcutコマンドを使ってみましょう。まず、「echo」と入力し、次に引用符を使って文字列「I Love My Mother」を渡し、その後このバーシンボル「|」を使用します。次に「cut」と入力し、「-c」を使用して文字をカットし、出力に表示したい文字の範囲を指定します。この場合、「1から10」の範囲を使用しました。これにより、文字列の最初の10文字が表示されます。空白も文字の一部です。

Linux@linux:~$ echo “I Love My Mother” | cut –c 1-10

以下の画像に示されているように、このコマンドを実行すると、初めの文字とスペースが表示され、残りの最後の文字は削除されました。「I Love My」という文字列は、私たちが提供した「1から10」の範囲の結果として表示されました。

例 # 4: sed コマンドの使用

このセクションでは、「sed」コマンドを使用して文字列の最後のいくつかの文字を削除します。sed関数には、bashスクリプトでの三つの主要な用途があります:stdoutへの書き込み、コンテンツの削除、特定の文字列の変更です。同じコマンドを前の例と同様に使用しますが、今回は文字列の値を「I love coding」に変更し、スペースはありません。

次に、バー記号「|」の後の部分が変更されます。この部分では「sed」コマンドが使用されるため、ターミナルに「sed」と入力します。最後に、単一のシングルクォートを使用し、その中で「s/$/」を使用します。これにより、文字列の末尾の単語が削除されます。また、特定の文字を文字列から削除するには、削除したいコマンド内でその文字を「$」に置き換えることができます。

Linux@linux:~$ echo “Ilovecoding” | sed ‘s/.$//’

値の最後の文字である「g」が出力から削除されました。現在、表示されている文字列の値は「Ilovecodin.」です。

結論

この記事では、bashを使用して行から単一の文字を削除する方法と、指定された文字列から最後の文字を削除する方法について検討しました。最初の例では「%」および「?」演算子を使用して文字列から最後の単語を削除しました。2番目の例では、コマンド内で削除したい文字数を指定しました。次に、3番目の例では、「cut」コマンドを使用して表示したい文字数を指定し、最後の単語を削除しました。最後に、最終セクションでは「sed」関数について説明しました。