2014-03-06 3 views
0

Java 응용 프로그램에서 df -Pg 명령 출력을 구문 분석하려고하는데, 원하는대로 인쇄 할 것입니다. 여기 AIX에서 명령 출력의 열 너비 설정

명령의 출력 : 자바

Filesystem GB blocks  Used Available Capacity Mounted on 
/dev/hd4   1.00  0.30  0.70  31%/
/dev/hd2   3.62  2.65  0.98  74% /usr 
/dev/hd9var  2.00  0.19  1.81  10% /var 
/dev/hd3   2.88  1.61  1.27  56% /tmp 
/dev/hd1   2.00  1.30  0.70  66% /home 
/proc     -   -   -  - /proc 
/dev/hd10opt  1.00  0.27  0.73  28% /opt 
/dev/fslv00  2.88  1.25  1.63  44% /tsmfiles 
/dev/fslv01  2.00  0.84  1.16  43% /opt/IBM/ITM 
/dev/livedump  0.25  0.00  0.25  1% /var/adm/ras/livedump 
/dev/DoOnceAIX  0.75  0.00  0.75  1% /DoOnceAIX 
/dev/nmonlv  1.00  0.03  0.97  4% /var/perf/poa 
/dev/fslv02  49.50  42.86  6.64  87% /u01 
/dev/fslv03  685.00 312.62 372.38  46% /u02 
akslltsm:/depot  60.50  43.06  17.44  72% /mnt 

내 파서는 공간의 크기와이 텍스트를 분할합니다. 줄을 읽는 동안, 파서는 최소한 1 개의 공백 문자를 볼 때 문자열을 나눕니다. 보시다시피 열 (예 : "GB blocks"및 "Mounted on") 안에 몇 줄이 있으므로 원하는대로 나눌 수 없습니다.

내가 원하는 것은 열 너비 (2 + 공백 문자)를 설정하고 내 프로그램에서 성공적으로 구문 분석하도록하는 것입니다.

+0

첫 번째 줄을 버리지 않는 이유는 무엇입니까? –

+0

좋은 아이디어지만 영구적 인 해결책은 아닙니다. 이 일일 명령 출력을 많이 인쇄 할 것입니다. 또한 어떤 경우에는 첫 줄이 필요합니다. – AloneInTheDark

+0

@AloneInTheDark, 첫 번째 줄은 건너 뜁니다. 그런 다음 자신 만의 제목을 생성하십시오. – sat

답변

1

특수 사례를 잡아서 공백을 채우고 열을 조정 한 다음 첫 번째 단계에서 수행 한 작업을 취소하십시오.

step one: sed -e 's/GB Blocks/GB_Blocks/' -e 's/Mounted on/Mounted_on/' 

second step: your normal program that adjusts the columns 

third step: sed -e 's/GB_Blocks/GB Blocks/' -e 's/Mounted_on/Mounted on/' 

그런 다음 함께 단지 파이프 그들을 :

sed -e ... | <your prog> | sed -e ... 

이 이러한 유형의 상황에 대한 매우 일반적인 기술이다. 입력을 구문 분석 할 수없는 경우 (해당 시점에 필요한 정의를 사용하여) 입력을 변경하여 구문 분석 한 다음 첫 번째 변경을 취소하십시오.