2011-07-29 4 views
12

sedでは、正規表現を適用すると最初のn行をスキップすることはできますか?私は現在、使用しています次:sedでregexを使用すると最初のn行をスキップしますか?

Name 
John 
Albert 
Mora 
Name 
Tommy 
Tammy 

1回のパスでは、私はNameを含む行を削除することです(そのうちの一つ、いくつかの正規表現を使用したいが、私がしたい:以下のファイルの

cat test | sed '/^Name/d;/^----------/1;/^(/d;/^$/d' 

以下を得るために)この場合の最初の行をスキップする:ファイルが巨大であるため

Name 
John 
Albert 
Mora 
Tommy 
Tammy 

を、私は、いずれかのパスのアプローチは素晴らしいことだので、複数のパスを作成する必要はありません。

答えて

21

はい、N,M構文の行の範囲にsedコマンドを適用できます。削除と

sed -e '2,$s/foo/bar/' 

例:

sed -e '2,${ /^Name/d }' 
+0

は、あなたがどのように置換するとは対照的に削除して構文を使用するように私に示してもらえます。この場合、あなたはこのような何かをしたいですか?基本的に、私が 'sed '2、$/^ Name/d''のようなことをすると、 'sed:-e expression#1、char 4:unknown command:' /' ' – Legend

+0

+ 1ちょうどそれを考え出しました:)私に正しい方向を指摘してくれてありがとう。 – Legend

+0

'2、$'は2行目からファイルの最後までを意味します。 $の直後の項目は操作です。これらの例では、 's/search/replace'か' {/^string-to-delete/d} ' – Excalibur

関連する問題