同僚の1人が、シェルのコマンドの出力から最初/最後の「n」行を削除する方法について質問しました。たとえば、彼はコマンドの出力から不要な行をすべて削除したいと考えていました– systemctl
必要な行だけを印刷します。コマンドsystemctl
以下に示すように、出力の最後にいくつかの一般的な行が含まれていました。ええと、彼はそれらの行を削除して残りを印刷したいと思っています。
以下は、不要な行を削除する前のコマンドです。
$systemctl -a --type=service ...... systemd-tmpfiles-setup.service loaded active exited Create Volatile Files and Directories systemd-udev-trigger.service loaded active exited udev Coldplug all Devices systemd-udevd.service loaded active running udev Kernel Device Manager systemd-update-done.service loaded active exited Update is Completed systemd-update-utmp-runlevel.service loaded inactive dead Update UTMP about System Runlevel Changes systemd-update-utmp.service loaded active exited Update UTMP about System Boot/Shutdown systemd-user-sessions.service loaded active exited Permit User Sessions systemd-vconsole-setup.service loaded active exited Setup Virtual Console tuned.service loaded active running Dynamic System Tuning Daemon LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 92 loaded units listed. To show all installed unit files use 'systemctl list-unit-files'.
上記の出力では、最後の7行を削除してサービスのみを一覧表示したいと考えています(スペースも1行です)。
解決策 : head
を使用します 最後の7行を削除するコマンド 以下に示すように:
$ systemctl -a --type=service | head -n -7
注 :- symbol
7より前。これは非常に重要です。
最初のn
を削除する方法 シェルコマンドの出力からの行
最初のn
を削除するには 行 シェルコマンドの出力からtail
を使用します 。以下のコマンド例は、シェルコマンドの出力から最初の7行を削除します。
注 :+ symbol
7より前。これは非常に重要です。
$ systemctl -a --type=service | tail -n +7