コマンドラインからテキストファイルの偶数行と奇数行を出力する方法

データファイル作成

$ curl -s http://www.billboard.com/rss/charts/hot-100 | sed -n -e 's/<title>\([0-9]\+:.*\)<\/title>.*/\1/p' | head | tee billboardtop10.txt
  1: One Dance
  2: Can't Stop The Feeling!
  3: Don't Let Me Down
  4: Panda
  5: This Is What You Came For
  6: Cheap Thrills
  7: Needed Me
  8: Don't Mind
  9: Ride
  10: Work From Home

 

  • sed

sedで偶数行を出力

$ sed -n 'n;p' billboardtop10.txt 
  2: Can't Stop The Feeling!
  4: Panda
  6: Cheap Thrills
  8: Don't Mind
  10: Work From Home

sedで奇数行を出力

$ sed -n 'p;n' billboardtop10.txt 
  1: One Dance
  3: Don't Let Me Down
  5: This Is What You Came For
  7: Needed Me
  9: Ride

 

  • awk

awkで偶数行を出力

$ awk 'NR % 2 == 0' billboardtop10.txt 
  2: Can't Stop The Feeling!
  4: Panda
  6: Cheap Thrills
  8: Don't Mind
  10: Work From Home

awkで奇数行を出力

$ awk 'NR % 2 == 1' billboardtop10.txt 
  1: One Dance
  3: Don't Let Me Down
  5: This Is What You Came For
  7: Needed Me
  9: Ride

 

参考 vim で一行おきに削除

:g/^/+d
:1d|g/^/+d