ちょっとした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) ヘッダー以外の行でシャッフル

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コマンドを呼べるとは知らなかった。 調べて見るものだ。