HOWTO · Bash

Bash 文字列から改行を削除

このチュートリアルでは、Bash で文字列から改行を削除する方法を示します。

このチュートリアルでは、Bash で文字列から改行を削除する方法を示します。

Bash で改行文字を含む文字列を作成する

場合によっては、文字列に改行文字を入れないようにする必要があります。 Bash には、特定の文字列から改行文字を削除する方法がいくつか用意されています。

この例を実行するには、まず、改行文字を含む文字列を作成します。 次のコマンドを使用して新しい文字列を作成しましょう。

DemoString=$'\nThis is delftstack.com\r   \n'
echo "|${DemoString}|"

上記のコマンドは、改行文字 \n を含む文字列を作成します。 出力を参照してください。

|
This is delftstack.com

|

Bash で Bashims を使用して文字列から改行文字を削除する

バシズムは // で、文字列から改行文字を削除するために使用できます。 この演算子は、文字列から削除するパラメーターを受け取ります。

// を使用して文字列から改行文字を削除する方法を見てみましょう。

echo "|${DemoString//[$'\t\n\r']}|"
echo "|${DemoString//[$'\t\n\r' ]}|"

パラメータ \t\n\r を持つコマンドと、パラメータ \t\n\r と空白文字を持つコマンドの 2つのコマンドがあります。 上記のコマンドは、bashisms を使用して改行文字とスペース文字を削除します。

出力を参照してください。

|This is delftstack.com   |

|Thisisdelftstack.com|

Bash で tr コマンドを使用して文字列から改行文字を削除する

tr コマンドは bashims と同様に機能します。 パラメータ内の文字を削除します。 tr コマンドは、文字列内の文字を置換するためにも使用されます。

しかし今のところ、コマンドで -d を使用する削除オプションに焦点を当てることができます。

tr コマンドを使用して、指定された文字列から改行文字を削除する例を試してみましょう。

DemoString=$'\nThis is delftstack.com\r   \n'
echo "|$DemoString|"|tr -d '\n\r'

上記のコマンドは、指定された文字列から改行文字を削除しようとします。 出力を参照してください。

|This is delftstack.com   |

tr コマンドを使用して余分なスペースを削除することもできます。 例を参照してください:

DemoString=$'\nThis is delftstack.com\r   \n'
echo "|$DemoString|"|tr -d '\n\r '

上記のコマンドは、文字列からスペースも削除します。 出力を参照してください。

|Thisisdelftstack.com|

Bash で extglob オプションを使用して文字列から改行文字を削除する

extglob オプションは、空白と改行文字を削除する機能も提供します。 このオプションを使用するには、まず、Bash で有効になっていることを確認してください。

extglob は、さまざまな操作に使用できる多くのオプションを提供します。 下の表を参照してください。

オプション 説明
? 指定されたパターンの 1 回または 1 回の出現に一致させるために使用できます。
* 指定されたパターンの 0 回以上の出現に一致させるために使用できます。
+ 指定されたパターンの 0 回以上の出現に一致させるために使用できます。
@ 指定されたパターンの 1つに一致できます。
! (パターンリスト) 指定されたパターンの 1つを除くすべてに一致できます。

extglob オプションを使用して、指定された文字列から改行文字を削除する例を試してみましょう。 例を参照してください。

shopt -s extglob
shopt extglob
DemoString=$'\nThis is delftstack.com\r   \n'
echo "|${DemoString%%*([$'\t\r\n '])}|"

shopt -s extglob は Bash で extglob オプションを有効にするために使用され、shopt extglobextglob のステータスを表示するために使用され、最後に、最後のコマンドは extglob を使用して改行文字を削除します。 .

出力を参照してください。

extglob         on
|
This is delftstack.com|