• 締切済み

perlの正規表現 (ワンライナー)

以下のような文字列から2つの要素だけ抽出するようなperl/rubyのスクリプトはどのように書いたらいいでしょうか? できればワンライナーで実現したいです(が、ワンライナーとしてはちょっと複雑なのでしょうか。。。) 元の文字列 -test t001 +opt0=1024 -N n_paramX -seed 1 -test t002 +opt0=1024 -opt1=2486 -N n_paramY -test t003 +opt3=1234 -N n_paramZ ... 整形後の文字列 t001 n_paramX t002 n_paramY t003 n_praramZ ※ 各行に -test と -N が必ず存在していることは仮定してOKです スクリプトで記述した場合: while(<>) { /\-test (\S+)/; $match00 = $1; /\-N (\S+)/; $match01 = $1; print "$match00 $match01\n"; } よろしくお願いします

みんなの回答

  • kumoz
  • ベストアンサー率64% (120/185)
回答No.2

ruby は知らないので、Perl のみの回答となります。2つの正規表現をつなげるだけなので、わりと短いワンライナーで書くことができます。 perl -ne 'print join(" ", /-test (\S+).*-N (\S+)/), "\n";' inputtext

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

perl/ruby は未経験ですけど。 \-test (\d+).*? -N(\s[a-zA-Z_]+) で $1 と $2 を連結させるとか?