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

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

awk 'NR==1;NR>1{print 
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) ヘッダー以外の行でシャッフル
|"sort"}' awk 'NR==1;NR>1{print
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) ヘッダー以外の行でシャッフル
|"sort -1krn"}' # 例1) 1列目で数字の降順 awk 'NR==1;NR>1{print
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) ヘッダー以外の行でシャッフル
|"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 
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
|"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

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

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

*