2012-10-07 2 views
0

를 정렬 I 필드 (열) 구분은이 경우이는 UNIX 파일에서 신속하게 각 행의 필드 (열)

12;6 
2;4 
9;4 
... 

처럼 보이는 파일이 ";"을. 각 줄마다 필드를 정렬하고 싶습니다. 허용되는 출력은 다음과 같습니다.

6;12 
2;4 
4;9 

허용되는 해결책은 필드 구분 기호가 ";" 값은 정수입니다. 이상적인 솔루션은보다 유연하며 다른 구분 기호와 영숫자 정렬이 가능합니다.

이 모든 작업은 명령 줄에서 수행해야합니다.

+1

그리고 지금까지 어떤 시도를 했습니까? – Mat

답변

3
perl -wne '$,=";"; chop; 
    print sort { $a <=> $b } split ";"; 
    print "\n"' input 

:

perl -wnE '$,=";"; chop; 
     say sort { $a <=> $b } split ";"' input 

또한 수행 할 수 있습니다

perl -F\; -wanE 'chop $F[-1]; $,=";"; say sort { $a <=> $b } @F' input 
,
+0

이 솔루션의 장점은 (일부 다른 것보다) 줄에 세 개 이상의 필드가있는 경우에도 작동한다는 것입니다. –

2
awk 'BEGIN{FS=OFS=";"}{if($1>$2)print $2,$1;else print $1,$2;}' file 

펄 고대없는 경우 테스트

kent$ cat t.txt 
12;6 
2;4 
9;4 
ccc;aaa 
bab;baa 

kent$ awk 'BEGIN{FS=OFS=";"}{if($1>$2)print $2,$1;else print $1,$2;}' t.txt 
6;12 
2;4 
4;9 
aaa;ccc 
baa;bab 
+0

커맨드 라인에'-F ';''를 쓰지 말고 왜 장황한 BEGIN 블록을 피하겠습니까? –

관련 문제