それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

sedで指定行表示 / head コマンド相当

指定行を表示 / head 相当をする

以前、sed で行挿入をシンプルに行う。 とういう記事を書いたとき、範囲指定について言及した。

今回は、sedの範囲指定を使って 先頭からN行を取得してみる。

範囲指定の練習

行番号を指定して、その行を表示する。

指定行を表示 / head 相当

これは、範囲'1,22' について p (print)を指定しています。

sed -n '1,22p' 

これは、次のコマンドと同じ。

head -n 22

範囲指定について

指定範囲x操作 でコマンドが構成されています。操作に sを指定すると置換(substituttion)が行われる。

sed は、ed/ex/vim などと同じed進化系なので、sai などの指定方法は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

関連記事

sed で行挿入をシンプルに行う。