• 締切済み

sedなどで、特定の文字列内の数値を抽出したい

sedなどで、特定の文字列内の数値を抽出したい シェルスクリプト内で、sedなどを使って特定の文字列内の文字列を抽出したいのですが、どうすればいいでしょうか? たとえば、job 999 at 2016-09-28 00:00のなかから、job ~ at内の「999」を抜き出したいです。 echo job 999 at 2016-09-28 00:00 | sed -e 's///g'... のようにして実行させたいです。

みんなの回答

  • M_Sato
  • ベストアンサー率54% (550/1003)
回答No.4

echo job 999 at 2016-09-28 00:00|sed -n -e "s/^job \([0-9]*\) at.*$/\1/p" - > test.txt ではどうでしょう。-nでデフォルト出力を抑制しないと、マッチしない行まで出力されると思います。

  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.3

echo job 999 at 2016-09-28 00:00 | sed 's/.*job \(.*\) at.*/\1/'

  • trapezium
  • ベストアンサー率62% (276/442)
回答No.2

sed でというなら echo job 999 at 2016-09-28 00:00 | sed 's/^job *//;s/ .*$//' あとは sed の代わりに ... | awk '{print $2}' ... | cut -f2 -d\ でもシェルスクリプト内でというなら普通に a="job 999 at 2016-09-28 00:00" b="${a#* }" echo "${b%% *}" set -- $a echo $2

  • hue2011
  • ベストアンサー率38% (2800/7250)
回答No.1

sedなど、という話はよくわかりませんが、まさしくsedなどの仲間であるawkを使ってください。 awk '{print $2}' でしょうね。これにたいしてテキストを流し込んでください。 Windowsだったらgawkです。 gawk "{print $2}" となるでしょう。 Windowsの場合はlinuxと違い、awkは最初からあるわけではないのでgawk.exeをダウンロードします。

関連するQ&A

  • sedなどで、特定の文字列の後の文字列を抽出したい

    sedなどで、特定の文字列の後の文字列を抽出したい シェルスクリプト内で、sedなどを使って特定の文字列の後の文字列を抽出したいのですが、どうすればいいでしょうか? たとえば、abcXYZ123defghiのなかから、XYZの後の「123」を抜き出したいです。 echo abcXYZ123defghi | sed ... のようにして実行させたいです。

  • 特定文字列間の文字列の抽出の際についての質問なのですが、

    特定文字列間の文字列の抽出の際についての質問なのですが、 例 xxxxxaiueoyyyyyaiueoyyyyy となっている場合aiueoだけを抽出したいのですが、 sed -n 's/.*xxxxx\(.*\)yyyyy.*/\1/p' とすると aiueoyyyyyaiueo が出力されてしまいます。 エンド文字が複数あった場合最初にマッチしたものまでの抽出は どのようにしたら宜しいのでしょうか?

  • OpenOfficeで文章から特定文字列を抽出する

    OpenOfficeを利用しています。 かなり異例なのですが、 ・文章の中に特定の文字列があるかを検索→ある場合はTrue、ない場合はFalce ・Trueの場合VLOOKUPでその文字列を参照として指定された数値を返す このようなことをやりたいのですが、なにかうまくやる方法はないでしょうか? マクロの知識がないのでできれば関数でお願いします。 そのような方法がなければ文章中の特定の文字列を抽出、その抽出した文字を参照としてVLOOKUPで指定された数値を返す、という方法でも構いません。 例として画像を添付しておきます。 例と言うよりは、実際に作ってるものなのですが…… A列からE列までをVLOOKUPで使う参照表とし、G列の文字列を検索値として、D列の数値をI列の結果として返したい、ということです。 よろしくお願いします。

  • sed コマンドについて

    はじめまして 当方、初心者で勉強の身です。ご回答頂けたら幸いです。 linuxのシェルファイルが100以上あり、こちらの全ファイル内に含まれる文字列"ABCDE"を文字列"12345"に置換をしたいと思っています。 sed コマンドで sed -e "s/ABCDE/12345/g" *.csh のように実行しても、画面上に変換後が表示されるだけで その後、ファイルを見ても置換されていません。 どのようにすれば、全ファイルが修正されるのでしょうか。 以上です。回答の方をよろしくお願い致します。

  • sedでファイルで条件指定の場合

    スクリプト初心者です。 sedコマンドを使用して文字列の置換をおこないたいのですが、条件がたくさんあるため、 条件部分をシェルのファイルと別ファイルにして実行したいです。 その際、シェル実行時の引数を条件ファイルに入れたいのですが、通常の文字列扱いになってしまい困っています。 アドバイスをお願いいたします。 ・test.sh  find $1 -type f | xargs sed -i -f mypattern.sed ・mypattern.sed  s|${1}aaa|/bbb|g test.sh hoge と実行した場合 "hogeaaa" を "bbb" に置換したいです。

  • エクセルで特定文字列の抽出する方法を教えてください。

    エクセルで特定文字列の抽出する方法を教えてください。 たとえばG00X-483.931Y-412.2R5.0 と書かれてるセルからXの値「-483.931」だけを抽出したいのですが分からなくて困ってます。 またこの数値は8文字と決まってないのでX~Yの間の数値と言う感じで抽出したいです。 よろしくお願いします。

  • 文字列から数値を抽出したいのですが・・。

    文字列から数値(integer型)を抽出したいのですが、うまくいきません。 val関数だと文字の途中の数値が判別できないし、困っています。 よろしくお願いします。 ※以下、文字列と数値の関係です。 ・"文字列" → 抽出したい数値  "0k,abc,5k,abc3.0" → 0530  "abc()_3t" → 3

  • 文字列から特定の文字を抜き出す

    こんにちは。 シェルスクリプトで文字列から特定の文字を抜き出し、 変数に入れたいのですが、うまくいきません。 申し訳ありませんが、アドバイスをお願いいたします。 文字列 $moji=aaa_bbb_ccc (文字は変動します) $a=aaa $b=bbb $c=ccc と"_"毎に変数に代入したい。 echo $moji | awk -F_ '{print $2}' で文字を標準出力に取り出すことはできるのですが、 そこから変数に代入する方法がいまいち分かりません。

  • sedで特定行を抽出したいです

    はじめまして、 下記のようなファイルがあり、sedで特定文字列(@@@, @@@@, @@@@@)を含む行のみを一回で抽出したいです。 sed -n -e "/p=300/,/eee/p" input > output' だと 不要な行も入ってしまいます orz... sedはWindows上のsed Logos 2.42を使用しています。 どのように書けば対象行のみを抽出できるか、ご教授をお願いいたします。 [ 読込み対象ファイル ] ***, @@@, @@@@, @@@@@は雑多な文字列 最初に不要な行が10~15行 <div class="aaa"> <a href="http://www.***.***/?p=300&***">@@@</a> </div> <div class="bbb"> <ul class="ccc"> <li class="ddd">@@@@</li> <li class="eee">@@@@@</li> <div class="aaa"> <a href="http://www.***.***/?p=300&***">@@@</a> </div> <div class="bbb"> <ul class="ccc"> <li class="ddd">@@@@</li> <li class="eee">@@@@@</li> 以下<div class="aaa">から<li class="eee">@@@@@</li>まで20回繰り返し。

  • シェルスクリプトで読み込んだ文字列の区切り文字以降の文字列を取得したい

    ちょっと説明が難しいのですが aaa = bbb こういう文字列の右側のbbbを取り出したいのですが可能ですか? 全てこのようなら問題ないのですが、前後のスペースに問題があります _aaa = bbb や aaa=bbb aaa =__bbb アンダーバーはスペースのかわりです。 のように前後にスペースが1つ2つ入っていたり抜けていたりします。 aaa = bbb だったら i=`echo | sed 's/aaa\ =\ //'` のようにして取得できていますが、その他の処理がうまくできません そもそもシェルスクリプトでこのような処理は無理なのでしょうか? perl ではできたのですができればシェルスクリプトで完結させたいのです。 よろしくお願いします。 使っているシェルはzshです。

専門家に質問してみよう