• ベストアンサー

sedの使い方に関する質問

例えばsedでファイルの5行目から10行目までを表示させたい 場合はどうすればよいでしょうか? sed -e '5,10p'などとヘルプを見てやってみたのですが うまくいかないので教えてください。

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

\( \) で囲まれたものは \数字(1~9)で参照することができます。 そのほか、abc* にマッチするのは空文字列、abc, abcc, abccc … ですが、\(abc\)* だと空文字列、abc, abcabc, abcabcabc … のようにグループ化することができます。 それと細かいことですが、大きいファイルに対して使うことがあるのなら sed -ne '5,1-p;10q' として10行目まできたら抜けてしまうようにしたほうがよいかも。

noname#24489
質問者

お礼

ありがとうございます。 また調べてみます。^^ sed -ne '5,1-p;10q'ですが 分からないのですが教えていただけないでしょうか? 5,1-pと10qの2つのコマンドからなるということですよね。 5行目なら1-pを実行し、10行目なら終了?? 1-pは何でしょうか?

その他の回答 (2)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

#2 です。 すみません 1- は10の打ち間違いです。 ご推察の通り、5,10p と 10q という二つのコマンドの組み合わせです。 そのままは並べられないので、;で区切っているわけです。 5,10p は5行目から10行目までを出力、10qは10行目だったら quit するというものです。 sedによっては;による区切りを許さないかもしれませんが、Linuxを 使っているシステムなら多分GNU sed でしょうから大丈夫のはず。

noname#24489
質問者

お礼

ありがとうございました。^^

  • Lean
  • ベストアンサー率72% (435/603)
回答No.1

以下のような感じですかね。 sed -n 5,10p ファイル

noname#24489
質問者

お礼

ありがとうございます。 うまくいきました。^^ sed "s/\(.*\)/copy \1 \\work\\\1/" list >cptxt.bat で\(.*\)で1行をさすみたいなんですが、 ()はどういう意味をもつのでしょうか? 以前も\(.*\)を見たことがあって意味がわからなくて。 http://www.chimimo.com/sed/

関連するQ&A