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

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

Written by blacknon

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

Leave a Comment

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

*