2

シェル スクリプトで一致したパターンの後に続く文字列を抽出する方法。Perl スクリプトではこの機能を知っていますが、シェル スクリプトでは知りません。

以下は例です。

Subject_01: これはサンプルの件名であり、異なる場合があります

「Subject_01:」に続く文字列を抽出する必要があります。

助けてください。

4

1 に答える 1

3

それはあなたのシェルに依存します。

シェルまたはまたは (私が信じている) を使用している場合は、次のような派手なことを行うことができます。

$ string="Subject_01: This is a sample subject and this may vary"
$ output="${string#*: }"
$ echo $output
This is a sample subject and this may vary
$

これはフォーマットに関してかなり制限されていることに注意してください。上記の行では、コロンの後に 1 つのスペースが必要です。それ以上ある場合は、 の先頭がパディングされ$outputます。

他のシェルを使用している場合は、次のcutコマンドを使用して、次のようなことを行う必要がある場合があります。

> setenv string "Subject_01: This is a sample subject and this may vary"
> setenv output "`echo '$string' | cut -d: -f2`"
> echo $output
This is a sample subject and this may vary
> setenv output "`echo '$string' | sed 's/^[^:]*: *//'`"
> echo $output
This is a sample subject and this may vary
> 

最初の例cutでは、非常に小さく単純な を使用しています。2 番目の例では を使用しておりsed、はるかに多くのことができますが、CPU に関しては (非常に) 少し重いです。

YMMV。おそらくこれを csh で処理するより良い方法があります (私の 2 番目の例では tcsh を使用しています) が、私はほとんどのシェル プログラミングを Bourne で行っています。

于 2012-05-15T06:17:29.377 に答える