• ベストアンサー

【shell】特定文字以降の行を取得

2018-05-01 hogehoge 2018-05-01 uniuni ponpokopon 2018-05-02 aaaaaa komekome 2018-05-02 norimaki ---------------------------------------- といった内容のテキストから 2018-05-02が最初に出現する行以降を取得したいですが、回さずに行う方法はありますでしょうか?sedあたりで出来そうな予感がするのですがどうでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

以下、指定文字列「2018-05-02」から最終行「$」までを範囲指定して出力してみました。 >cat /tmp/hoge 2018-05-01 hogehoge 2018-05-01 uniuni ponpokopon 2018-05-02 aaaaaa komekome 2018-05-02 norimaki >sed -ne '/2018-05-02/,$p' /tmp/hoge 2018-05-02 aaaaaa komekome 2018-05-02 norimaki

muuming2001
質問者

お礼

ありがとうございます。ドンピシャです! $pは最終を指すのですね。知りませんでした!

関連するQ&A

  • 文字列を複数行の先頭にいれたいです。

    下記のようなテキストファイル(氏名の下は不特定数行)があります。 山田 hogehoge hogehoge hogehoge hogehoge 田中 hogehoge hogehoge 鈴木 hogehoge これを下記のようなテキストに変換したいのですがsedとかでできないでしょうか?sedは使える環境です。よろしくお願いいたします。 山田hogehoge 山田hogehoge 山田hogehoge 山田hogehoge 田中hogehoge 田中hogehoge 鈴木hogehoge

    • ベストアンサー
    • Perl
  • perlで特定行から特定行までを抜き出しor置換

    perlで以下のようなことをしたいと考えています。 以下のことを、コマンドラインから「perl ~」という形で 実行したいのですが、どのよにすればよいでしょうか。 1.特定行から特定行までを抜き出し 2.特定行から特定行の範囲で文字列置換 例えば、次のようなテキストファイルがあったとします。 example.txt ================================== #START aaaa hogehoge test okok perl script #END ================================== 上記ファイルを読み込んで、 1.「#START」から「#END」の間に挟まれた行だけ抜き出し 2.「#START」から「#END」の間で、「test」を置換 のです。 sedで言うところの sed -e '/#START/,/#END/ s/YYYYMM/201603/g' test.txt をやりたいのです。

    • ベストアンサー
    • Perl
  • Perlで特定行から特定行までを抜き出したい

    皆さんのお知恵をお貸し頂ければ幸いです。 Perlで以下のようなことをしたいと考えています。 例えば、次のようなテキストファイルがあったとします。 example.log ================================== aaaa hogehoge test okok perl script ================================== 上記ファイルを読み込んで、「hogehoge」から「perl」の間に挟まれた行だけ抜き出したいのです。 イメージとしては、読み込んだファイルを配列に入れて、一行づつ読ませ、キーワード「hogehoge」が現れたらそこでフラグを立て、それ以降の行を表示し、キーワード「perl」が現れた時点で表示を止めるという処理になるのかな?と思っています。 このような場合、どういう風にすればいいのでしょうか? 恐れ入りますが、ご教授頂ければ幸いです。 それでは、どうぞよろしくお願い致します。

    • ベストアンサー
    • Perl
  • 番号のある行とその一つ下の行を抜き出していく

    次のようなテキストファイルがあります。 (hogehoge の部分はそれぞれの行によって全く異なる文章です) 253 hogehoge hogehoge (間に数百行あり) 101 hogehoge hogehoge (間に数行あり) 100 hogehoge hogehoge (間に数行あり) 99 hogehoge hogehoge (間に数百行あり) 14 hogehoge hogehoge (間に数行あり) 13 hogehoge hogehoge これから、 253 の数字がある部分でいえば 253 hogehoge の行とそのすぐ下の1行の2行ずつを 抜き出して 全てつなぎ合わせたテキストファイルを作りたいです。 どのようにすればよいでしょうか? また、2桁の数字の行が 013 hogehoge などとなっていた時は、同じことをやるのに どのようにやり方を変えればいいでしょうか? (これができれば  004 hogehoge  などの行まであっても同じやり方でできると思います。) よろしくお願いします。

  • sedで特定文字が出たら次の行は読み飛ばす

    Linuxのsedコマンドなのですが、特定文字列が出たら読み飛ばすという事をやっています。 例えば、'#SKIP'が出たら次の行(複数行)は読み飛ばすみたいな事をです。 行飛ばしで2点質問がありますのでお願いします。 以下の様なファイルがあります。 /---------- $ cat input.txt YYYY YYYY YYYY YYYY YYYY #SKIP YYYY YYYY YYYY YYYY YYYY -----------/ '#SKIP'が出たら次の行を読み飛ばすは、 $ sed '/#SKIP/{N; s/YYYY/2016/g}' input.txt YYYY YYYY YYYY YYYY YYYY #SKIP 2016 YYYY YYYY YYYY YYYY と、'#SKIP'の下の行が置換されます。 数行読み飛ばす場合は $ sed '/#SKIP/{N;N;N; s/YYYY/2016/g}' input.txt YYYY YYYY YYYY YYYY YYYY #SKIP 2016 2016 2016 YYYY YYYY と、'#SKIP'から下の3行が置換されます。 てっきり、'#SKIP'から指定した(N;)行分読み飛ばし、それ以降を置換すると 思っていたのですが違うのでしょうか。 使い方が間違っているのでしょうか。 また、同じ様な行飛ばしで、範囲指定した場合ですが、 $ sed -e '3,20n;n;n; s/YYYY/2016/g' input.txt や $ sed -e '3,20{n;n;n; s/YYYY/2016/g}' input.txt とした場合、範囲指定外の3~20以外でも置換されます。 3行目から置換されたり、20行目を越えても置換されます。 OS、バージョンによるものでしょか。 本記載の2点について教えて下さい。

  • バッチで特定文字が含まれる先頭行を取得したい

    バッチコマンドでファイルから特定の文字を検索し、その文字が見つかった最初の行が何行目なのかを取得したいのですが、可能でしょうか?

  • shell diff の使い方について

    shellで差分をとりたいとおもっているのですが・・・ aaa.txtの中身 ※1 aaaaaa_xxx.c ※2 bbbbbb_yyy.c . . . bbb.txtの中身 ※1 aaaaaa.c ※2 bbbbbb.c . . . aaa.txt、bbb.txtそれぞれに200近くのファイル名のみが入っています。 両方のテキストファイルを読み込み、それぞれの※1と※1、※2と※2というふうに 差分を見ていきたいと思っています。行はすべてバラバラです。 差分を見たい対象になる基準は・・・ 例えば、※1であればaaaaaaの部分が同じなので。 (ディレクトリもそれぞれファイルごとにばらばらです) ついでに差分の行数も出力したいと考えています。 なにか良い方法を教えていただけませんでしょうか? shellでつくりたいと思っています。 どうかよろしくお願いいたします。

  • php で特定の文字の行以降のデータを無視したいです。

    php で特定の文字の行以降のデータを無視したいです。 $text = ' この文字列はテストといいます。 テストはどうですか? <a href="index.html">豆腐</a> というサイトがあります。 '; という、文字列から、 ”この文字列はテストといいます。 テストはどうですか? ” というデータを取得したいと考えています。 例ですと、「<a href="index.html">豆腐</a>」というデータ以前の データを取得したいと思っています。 恐らく、preg_match あたりで、できる…かもと思っていますが…。

    • ベストアンサー
    • PHP
  • 特定のフィールドの文字列を取得

    初心者ですがよろしくお願い致します。 □わからない事 ・特定のフィールドの文字列を取得 ・取得した文字列を配列に格納 □条件 ・mysqlにはすでにデータが登録済み ・PHPより操作 □具体例 フィールド名(hogehoge)に文字列が入っています。 AAAAAA(10000レコード) BBBBBB(5000レコード) CCCCCC(3000レコード) DDDDDD(1000レコード) ・・・・・・(・・・・レコード) 重複が多数ありますが、重複しない文字列だけを取り出して配列に格納したいと思っていますが、うまいやり方がわかりません。 どなたか教えて頂けませんか? よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • ●特定の文字が含まれるセルの行番号取得(複数あり)

    excelの関数の質問です。画像をご参照ください。 「B1」に入力した文字が含まれる行番号を取得したいです。 これが一つであればMATCH関数で出せるのですが、最大20個出現するため困っています。 画像例のように「D1」に関数で答えを出したいです(カンマでつなげたい) 検索する範囲は「A2:A10000」程度で大丈夫です。 ※行番号取得と書きましたが、1行目を作業セルで使用するため  実際は「行番号から1引いた数」となります。 似たような質問がたくさんあると思いますが、検索しても解決しませんでした。 詳しい方、ご教授いただけるとうれしいです。 よろしくお願いいたします。 --------------------------------------------- 検索値⇒ ● 結果⇒ タイトル行 ●あ い う え ●お か き く ●け こ ---------------------------------------------