こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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";
}

よろしくお願いします

投稿日時 - 2017-06-23 14:18:28

QNo.9344311

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

ruby は知らないので、Perl のみの回答となります。2つの正規表現をつなげるだけなので、わりと短いワンライナーで書くことができます。

perl -ne 'print join(" ", /-test (\S+).*-N (\S+)/), "\n";' inputtext

投稿日時 - 2017-06-23 17:51:15

ANo.1

perl/ruby は未経験ですけど。

\-test (\d+).*? -N(\s[a-zA-Z_]+)

で $1 と $2 を連結させるとか?

投稿日時 - 2017-06-23 17:44:27