1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

後続処理に邪魔なヘッダー行を読み飛ばす。2行目以降のみ表示する tail と sed, awk

Last updated at Posted at 2023-01-18

ファイルやコマンドの出力結果にヘッダー行がついていると、後続処理にとって邪魔です。ヘッダーを読み飛ばす必要があります。

ヘッダーつきの出力

こういうヘッダー付きの出力を想定します。便宜上 withheader.txt というファイル名にします。

withheader.txt
header
1
2
3
4
5

tail の場合

tail は -n で行数を指定できます。

tail -n +2 withheader.txt

sed の場合

--expression (-e)で最終行を表す $ を使います。 2,$p で2行目以降から最終行まで表示する(p)という意味です。

コマンド
sed --silent --expression '2,$p' withheader.txt
出力
1
2
3
4
5

awk の場合

NR が行を示すので行番号が1より大きい行について print $1 を実行します。 $1 はフィールドセパレーターで区切られた1列目のことを指します。フィールドセパレーターは -F--field-separator で指定できます。フィールドセパレーターはデフォルトではスペースです。

コマンド
awk 'NR>1{print $1}' withheader.txt
出力
1
2
3
4
5

ユースケース: すべての Docker コンテナを止める

起動している docker コンテナをすべて止めることを考えます。 docker はストレージ容量をたくさん消費するため、不要なコンテナやイメージは削除することがあります。しかし、コンテナやイメージを削除するには、起動しているコンテナを止めなければなりません。

起動している docker のコンテナ一覧は docker container ls で確認できます。 ヘッダーがついています。

$ docker container ls
CONTAINER ID   IMAGE                              COMMAND                  CREATED        STATUS                             PORTS                                             NAMES
e74b29000a27   apache/superset:latest-dev         "/app/docker/docker-…"   2 months ago   Up 32 seconds (health: starting)   8088/tcp                                          superset_worker
a3a95fbdd855   apache/superset:latest-dev         "/app/docker/docker-…"   2 months ago   Up 31 seconds                      8088/tcp                                          superset_worker_beat
e5f9ba956cc7   apache/superset:latest-dev         "/app/docker/docker-…"   2 months ago   Up 31 seconds (health: starting)   0.0.0.0:8088->8088/tcp, :::8088->8088/tcp         superset_app
4a40a256f74a   postgres:10                        "docker-entrypoint.s…"   2 months ago   Up 31 seconds                      5432/tcp                                          superset_db
9e8af44d8e5d   redis:latest                       "docker-entrypoint.s…"   2 months ago   Up 32 seconds                      6379/tcp                                          superset_cache
bb4c9ffc005b   nginx:stable                       "/docker-entrypoint.…"   8 months ago   Restarting (1) 1 second ago                                                          nginx-php_nginx_1
8fc19aff9fe3   phpmyadmin/phpmyadmin:fpm-alpine   "/docker-entrypoint.…"   8 months ago   Up 31 seconds                      9000/tcp, 0.0.0.0:8888->80/tcp, :::8888->80/tcp   nginx-php_phpmyadmin_1
8cd99dcfce80   mysql:8                            "docker-entrypoint.s…"   8 months ago   Up 32 seconds                      3306/tcp, 33060/tcp                               nginx-php_db_1

tail を使う場合

docker container ls | cut -f1 -d" " | tail -n +2 | xargs -I {} docker stop {}

sed を使う場合

docker container ls | cut -f1 -d" " | sed --silent --expression '2,$p' | xargs -I {} docker stop {}

awk を使う場合

docker container ls | awk 'NR>1{print $2}' | xargs -I {} docker stop {} 
1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?