操作する行の範囲を指定できます。たとえば、すべての回線を操作するには(もちろんデフォルトです):
sed -e "1,$ s/a/b/"
しかし、私は最後の行を除いてすべてを操作する必要があります。どうやら算術式を使用することはできません。
sed -e "1,$-1 s/a/b/"
(この場合、違いが生じる場合はcygwinを使用しています)
sed -e "$ ! s/a/b/"
これは、最後を除くすべての行に一致します。クイックテストで確認!
このコマンドも機能します
sed '$d'
sed
ではないことは知っていますが、head
が最も簡単で柔軟な方法になると思います。
head -n -1 the-file
-1の代わりに-2、-3 ...を使用して、最後の2行を除くすべてを取得します。
さて、あなたはこのようなものでそれをハックすることができます:
sed -e "1,$(($(cat the-file | wc -l) - 1))s/a/b/"
または、代わりにtail
を使用できます。
(tail +1 the-file) | sed -e s/a/b/; tail -1 the-file