複数のテキストファイルから任意の文字にマッチした「後の文字列」を抽出したい。
find + xargs で処理させてみる
マッチした文字列を返すのはできる。
とりあえず「nulla」でマッチング。
find -s . -name "*.txt" | xargs cat | ruby -ne '$_ =~ /nulla/; p $&'
でも$'(シングルクォーテーション)を使って↓みたいに書きたいのに
これではダメ。
find -s . -name "*.txt" | xargs cat | ruby -ne '$_ =~ /nulla/; p $''
スクリプトのくくりをダブルクォーテーションに変えてみたけどだめ。
どうすりゃいい?
あきらめた
Dir.glob("./*.txt").each do |f| File.open(f,'r').each do |line| line =~ /nulla/ puts $' end end
再チャレンジ
find -s . -name "*.txt" | xargs cat | ruby -ne "\$_ =~ /nulla/; p \$'"
スクリプトのくくりをダブルクォーテーションに
$をバックスラッシュでエスケープ。