指定行を表示 / head 相当をする
以前、sed で行挿入をシンプルに行う。 とういう記事を書いたとき、範囲指定について言及した。
今回は、sedの範囲指定を使って 先頭からN行を取得してみる。
範囲指定の練習
行番号を指定して、その行を表示する。
指定行を表示 / head 相当
これは、範囲'1,22'
について p
(print)を指定しています。
sed -n '1,22p'
これは、次のコマンドと同じ。
head -n 22
範囲指定について
指定範囲x操作
でコマンドが構成されています。操作に s
を指定すると置換(substituttion)が行われる。
sed は、ed/ex/vim などと同じed進化系なので、s
やa
やi
などの指定方法はvim と同じ。
vim の場合も範囲x操作
で指定する、たとえば %s/foo/bar/
は %=全体
をs=置換
する/search/replace/
のようになっている
sed の場合は、範囲指定を処略すると読み込み行がすべて対象になる。 s/foo/bar/
で全行を置換処理する。世間のsedのサンプルは、全行指定して「範囲」の存在を無視するので、sedが分かりづらい。
tail はめんどくさい
tail -n 1
相当ならすぐに作れるのだが。
cat /etc/passwd | sed -n '$p'
tail -n 5
相当は末尾から数え直すのがとてもめんどくさい
同じことを試してた先人がいるので、それを参考にする。
https://qiita.com/angel_p_57/items/e7335f35ea5e1c7c3f02