2016-07-19 11 views
1

この質問は何度も尋ねられていますが、回答はすべてGNU sed特有のものです。BSD/OS Xでs行目のX行を削除/削除する方法

sed -i '' "/${FIND}/,+2d" "$FILE"

"期待されるコンテキストアドレス" エラーを与えます。

BSD sedを使ってX行を削除したり、X行を削除したりする方法を例を挙げて教えてください。

答えて

1

sed編集スクリプト(-nで実行)はGNU sed/^pattern/,+2dが何をエミュレートします:

/^pattern/{ 
    n 
    n 
    d 
} 

p 

/^pattern/を照合すると、それは入力の次の2行を読み、[すべてを破棄します(再起動しますサイクル)。パターンが一致しない場合は、行が印刷されます。

2

これは単にsedの仕事ではなく、awkの仕事です。

$ seq 5 | awk '/3/{c=2} !(c&&c--)' 
1 
2 
5 

変数cをスキップしたい行に設定するだけです。

https://stackoverflow.com/a/18409469/1745001も参照してください。

関連する問題