ターミナル上でヘッダ行の位置は固定して中身だけをソート・シャッフルする

ちょっとしたcsvファイルをソートする際、ヘッダーである1行目はそのままに中身だけソートする必要があったので、ちょっと調べてみた。
で、以下のようにすることで1行目の位置はそのままにソートが可能なので、備忘として残しておく。

awk 'NR==1;NR>1{print $0|"sort"}'
awk 'NR==1;NR>1{print $0|"sort -1krn"}' # 例1) 1列目で数字の降順
awk 'NR==1;NR>1{print $0|"shuf"}'       # 例2) ヘッダー以外の行でシャッフル
Sponsored Links

blacknon@BS-PUB-DEVELOP:~$ cat test1.csv
header1,header2,header3,header4,header5
Q1,Q2,Q3,Q4,Q5
N1,N2,N3,N4,N5
Y1,Y2,Y3,Y4,Y5
D1,D2,D3,D4,D5
W1,W2,W3,W4,W5
J1,J2,J3,J4,J5
P1,P2,P3,P4,P5
F1,F2,F3,F4,F5
C1,C2,C3,C4,C5
Z1,Z2,Z3,Z4,Z5
T1,T2,T3,T4,T5
R1,R2,R3,R4,R5
O1,O2,O3,O4,O5
K1,K2,K3,K4,K5
X1,X2,X3,X4,X5
A1,A2,A3,A4,A5
E1,E2,E3,E4,E5
U1,U2,U3,U4,U5
H1,H2,H3,H4,H5
B1,B2,B3,B4,B5
M1,M2,M3,M4,M5
L1,L2,L3,L4,L5
V1,V2,V3,V4,V5
I1,I2,I3,I4,I5
G1,G2,G3,G4,G5
S1,S2,S3,S4,S5
blacknon@BS-PUB-DEVELOP:~$
blacknon@BS-PUB-DEVELOP:~$ # 普通にsortした場合
blacknon@BS-PUB-DEVELOP:~$ cat test.csv | sort
A1,A2,A3,A4,A5
B1,B2,B3,B4,B5
C1,C2,C3,C4,C5
D1,D2,D3,D4,D5
E1,E2,E3,E4,E5
F1,F2,F3,F4,F5
G1,G2,G3,G4,G5
H1,H2,H3,H4,H5
I1,I2,I3,I4,I5
J1,J2,J3,J4,J5
K1,K2,K3,K4,K5
L1,L2,L3,L4,L5
M1,M2,M3,M4,M5
N1,N2,N3,N4,N5
O1,O2,O3,O4,O5
P1,P2,P3,P4,P5
Q1,Q2,Q3,Q4,Q5
R1,R2,R3,R4,R5
S1,S2,S3,S4,S5
T1,T2,T3,T4,T5
U1,U2,U3,U4,U5
V1,V2,V3,V4,V5
W1,W2,W3,W4,W5
X1,X2,X3,X4,X5
Y1,Y2,Y3,Y4,Y5
Z1,Z2,Z3,Z4,Z5
header1,header2,header3,header4,header5
blacknon@BS-PUB-DEVELOP:~$
blacknon@BS-PUB-DEVELOP:~$ # Header
blacknon@BS-PUB-DEVELOP:~$ cat test.csv | awk 'NR==1;NR>1{print $0|"sort"}'
header1,header2,header3,header4,header5
A1,A2,A3,A4,A5
B1,B2,B3,B4,B5
C1,C2,C3,C4,C5
D1,D2,D3,D4,D5
E1,E2,E3,E4,E5
F1,F2,F3,F4,F5
G1,G2,G3,G4,G5
H1,H2,H3,H4,H5
I1,I2,I3,I4,I5
J1,J2,J3,J4,J5
K1,K2,K3,K4,K5
L1,L2,L3,L4,L5
M1,M2,M3,M4,M5
N1,N2,N3,N4,N5
O1,O2,O3,O4,O5
P1,P2,P3,P4,P5
Q1,Q2,Q3,Q4,Q5
R1,R2,R3,R4,R5
S1,S2,S3,S4,S5
T1,T2,T3,T4,T5
U1,U2,U3,U4,U5
V1,V2,V3,V4,V5
W1,W2,W3,W4,W5
X1,X2,X3,X4,X5
Y1,Y2,Y3,Y4,Y5
Z1,Z2,Z3,Z4,Z5

というか、こういう風にしてawkからOSコマンドを呼べるとは知らなかった。
調べて見るものだ。


Written by blacknon

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

Leave a Comment

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

*