web-dev-qa-db-ja.com

Perlスクリプトを使用して文字列に割り当てられている番号を抽出します

ファイルがありますinput.txtにはいくつかの文字列があり、各文字列にはいくつかの値が割り当てられています。

私の仕事は、任意の文字列に割り当てられている番号を抽出するPerlスクリプトを作成することです。

たとえば、このinput.txt

Tom=0×1234,Bob=0x4567,rock=0x8912.

rockに割り当てられている値を抽出する必要があります。

これを行うには、スクリプトの作成に多少の助けが必要です。

3
RCV

@terdonの1つのバリエーション-各/rock=(...)/に対して、次のように言います:

Perl -nE 'say for /rock=(\w+)/'

およびgrepを使用したソリューション

grep -Po 'rock=\K\w+' file
5
user216043

1つの方法を次に示します。

_$ Perl -lne  '/rock=([^.,]+)/ && print $1' file
0x8912
_

/rock=([^.]+)/は文字列_rock=_と一致し、1つ以上の非_._文字(_[^.]+_)の最長ストレッチをキャプチャします。括弧は一致を「キャプチャ」し、_$1_として使用できるようにします。これが一致する場合、_$1_が出力されます。

_-l_は、各入力行から末尾の改行を削除し、各print呼び出しに改行を追加します。 _-n_は、入力ファイルを1行ずつ読み取り、_-e_で指定されたスクリプトを各行に適用するようPerlに指示します。

3
terdon