LoginSignup
0
0

More than 3 years have passed since last update.

bash で N行ずつバルク処理したい

Last updated at Posted at 2019-07-03

ってあるよね?

とりあえず 1000件ほどの tsv を適当に作って

cat /dev/urandom | base64 -w0 | fold -w 10 | paste - - - | head -n 1000 > huge.tsv
$ head huge.tsv
Posc8lji4o  2cwngkuL+q  SwowWLktkr
0MLQqvEx24  y4ZfM375H4  KdIhH9itax
iGzqpBq95C  7BmgvHrEsW  z/gIhZgo14
14K8v6wTqI  mh30NtgYou  Tj6qx6pE2n
nNy4svr68R  jdsSB6FYiY  +IAAsN53BC
8Pwjh53HhV  73IIKzPz5v  2j1GKgu35l
yvxzKpsJia  8LrRjxfrFD  ywFhlezZPS
xiDZKQf0Da  1227YQU5ya  +fMcvOYe0j
6rQ78nGsJd  kAvubrqgTG  N4XRAVQ3TD
bEwk7AEFbZ  NoREai/dtu  K6nm7sAdir

10行ずつに区切って適当なヘッダを付けてみます

コツ

  • export -f で function をexport して
  • split の --filter にコールバックで指定する
a.sh
#!/bin/bash

function _bulk() {
    echo -e "c1\tc2\tc3"
    cat
}
export -f _bulk

cat huge.tsv | split -l 10 --filter _bulk
$ bash a.sh > out

$ wc -l out
1100 out

$ head -n 30 out
c1  c2  c3
Posc8lji4o  2cwngkuL+q  SwowWLktkr
0MLQqvEx24  y4ZfM375H4  KdIhH9itax
iGzqpBq95C  7BmgvHrEsW  z/gIhZgo14
14K8v6wTqI  mh30NtgYou  Tj6qx6pE2n
nNy4svr68R  jdsSB6FYiY  +IAAsN53BC
8Pwjh53HhV  73IIKzPz5v  2j1GKgu35l
yvxzKpsJia  8LrRjxfrFD  ywFhlezZPS
xiDZKQf0Da  1227YQU5ya  +fMcvOYe0j
6rQ78nGsJd  kAvubrqgTG  N4XRAVQ3TD
bEwk7AEFbZ  NoREai/dtu  K6nm7sAdir
c1  c2  c3
hWdqhFrK2B  hSbBavFqgR  idwa4ZvuZC
QrsXnSUXdN  k66wnHwi6k  g6DBRX14JX
izNslRLZVr  qmjCxAqvLG  lJ1nEwQNni
6UHA+nsKwW  gEE42phePd  gPnduaQKVn
QO3nKJi0Zs  jJcM/DfZJ5  PwwF9bocQS
NrvMzsIXWK  h4hnJyYt0p  20JVJBSJq5
22tRFn70W3  L0PG+uUpej  vPuPBws2m2
wyJhguYB1v  bH4HlBKl+4  UB6QaYntOe
o1YJ0c/O5t  fbiUKOiPBg  iKOOhDWRMK
aRu8DmegEW  Xf9PQWVhiS  KcRNN+vq//
c1  c2  c3
tDH9/+rB+z  PZCfl2p97S  wxbK/amAuK
rS4baCQ8SH  JS0pQujmvB  RnKEULeQL8
GX1DhRno99  HuY+vDUmyu  Qy2Pz/a/kz
QposxDvS9t  G27lJO64fZ  LLakF/D9bd
ExRSv1PSqv  kXDVf9WFyC  Y3TlhPPpIG
DLNn7NXVbM  EsZ54L1YW9  cvinfcaxwg
GNdpww4HU4  UkF5BjrXrc  SsDhVsy3bD

おわり。

0
0
0

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
0
0