Linuxでawk/sedを使ってファイルから奇数行・偶数行のみを抽出する
Pocket

Linuxで、awkやsedを使ってファイルから奇数行・偶数行のみを抽出する場合は、以下のようにする。

●awk

awk 'NR%2==0' # 偶数行のみ抽出
awk 'NR%2!=0' # 奇数行のみ抽出
blacknon@BS-PUB-UBUNTU-01:~$ cat -n /tmp/test4.txt
     1  aaaaa
     2  bbbbb
     3  ccccc
     4  ddddd
     5  eeeee
     6  fffff
     7  ggggg
     8  hhhhh
     9  iiiii
    10  jjjjj
    11  kkkkk
    12  lllll
    13  mmmmm
blacknon@BS-PUB-UBUNTU-01:~$ cat -n /tmp/test4.txt | awk 'NR%2==0' # 偶数行のみ抽出
     2  bbbbb
     4  ddddd
     6  fffff
     8  hhhhh
    10  jjjjj
    12  lllll
blacknon@BS-PUB-UBUNTU-01:~$ cat -n /tmp/test4.txt | awk 'NR%2!=0' # 奇数行のみ抽出
     1  aaaaa
     3  ccccc
     5  eeeee
     7  ggggg
     9  iiiii
    11  kkkkk
    13  mmmmm
Sponsored Links

●sed

sed '1d; n; d' # 偶数行のみ抽出
sed 'n; d' # 奇数行のみ抽出
blacknon@BS-PUB-UBUNTU-01:~$ cat -n /tmp/test4.txt
     1  aaaaa
     2  bbbbb
     3  ccccc
     4  ddddd
     5  eeeee
     6  fffff
     7  ggggg
     8  hhhhh
     9  iiiii
    10  jjjjj
    11  kkkkk
    12  lllll
    13  mmmmm
blacknon@BS-PUB-UBUNTU-01:~$ cat -n /tmp/test4.txt | sed '1d; n; d' # 偶数行のみ抽出
     2  bbbbb
     4  ddddd
     6  fffff
     8  hhhhh
    10  jjjjj
    12  lllll
blacknon@BS-PUB-UBUNTU-01:~$ cat -n /tmp/test4.txt | sed 'n; d' # 奇数行のみ抽出
     1  aaaaa
     3  ccccc
     5  eeeee
     7  ggggg
     9  iiiii
    11  kkkkk
    13  mmmmm
Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。