pr/split/paste並び替え

prで表の並び替えをする方法と、split pasteでの方法を見ていきます。

takk@deb8:~$ seq 25 | pr -t5J
1       6       11      16      21
2       7       12      17      22
3       8       13      18      23
4       9       14      19      24
5       10      15      20      25
takk@deb8:~$ 

上と同じことをsplit pasteでやろうとすると、当然パイプが続きません。

takk@deb8:~$ seq 25 | split -dl5;paste *
1       6       11      16      21
2       7       12      17      22
3       8       13      18      23
4       9       14      19      24
5       10      15      20      25
takk@deb8:~$ 

次はX方向です。

takk@deb8:~$ seq 25 | pr -5Jl1
1       2       3       4       5
6       7       8       9       10
11      12      13      14      15
16      17      18      19      20
21      22      23      24      25
takk@deb8:~$ 

prとsplit pasteを比べると、prの方が遥かに楽です。

takk@deb8:~$ seq 25 | split -dl5;paste -s *
1       2       3       4       5
6       7       8       9       10
11      12      13      14      15
16      17      18      19      20
21      22      23      24      25
takk@deb8:~$ 

splitとpasteを使う意味はないように見えますが、prよりも並び替えの柔軟性があります。

takk@deb8:~$ seq 25 | split -dl5;paste `ls -r`
21      16      11      6       1
22      17      12      7       2
23      18      13      8       3
24      19      14      9       4
25      20      15      10      5
takk@deb8:~$ 

数字2桁のIDを英単語に紐つけて、表中のIDを英単語に置き換える例です。

takk@deb8:~$ sort -R /usr/share/dict/words | head -25 |nl -nrz -w2 | perl -nae 'print"s/$F[0]/$F[1]/;"' > replace
takk@deb8:~$ seq -f"%02g" 25 | split -dl5;paste `ls -r x*` | perl -p replace | expand -t18
limed             enlarge           tidiness          routinely         Bambi
lien's            fancy             neurologists      confederation     ways
pasturing         trawl's           rounder           forger            Minot
Corning's         peruse            gabbles           synchronization's protégé
spore             childproofed      conserved         Aquino's          pica
takk@deb8:~$ 

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA