sed
AIX에서 내가 생각하는 것을하지 않습니다. IOSTAT 출력에서 여러 공백을 단일 공백으로 바꾸려고합니다.
# iostat
System configuration: lcpu=4 drives=8 paths=2 vdisks=0
tty: tin tout avg-cpu: % user % sys % idle % iowait
0.2 31.8 9.7 4.9 82.9 2.5
Disks: % tm_act Kbps tps Kb_read Kb_wrtn
hdisk9 0.2 54.2 1.1 1073456960 436765896
hdisk7 0.2 54.1 1.1 1070600212 435678280
hdisk8 0.0 0.0 0.0 0 0
hdisk6 0.0 0.0 0.0 0 0
hdisk1 0.1 6.3 0.5 63344916 112429672
hdisk0 0.1 5.0 0.2 40967838 98574444
cd0 0.0 0.0 0.0 0 0
hdiskpower1 0.2 108.3 2.3 2144057172 872444176
# iostat | grep hdisk1
hdisk1 0.1 6.3 0.5 63345700 112431123
#iostat|grep "hdisk1"|sed -e"s/[ ]*/ /g"
h d i s k 1 0 . 1 6 . 3 0 . 5 6 3 3 4 5 8 8 0 1 1 2 4 3 2 3 5 4
sed는 전체 그룹 (/ g)에 대해 여러 공백 (/ [] * /)을 단일 공백 (/ /)으로 검색하고 교체해야하지만 ... 각 문자 사이의 간격을 유지해야합니다.
내가 무엇을 잘못하고 있지? 나는 그것이 단순한 무언가가되어야한다는 것을 알고있다 ... AIX 5300-06
편집 : 10 개 이상의 하드 드라이브가있는 다른 컴퓨터가 있습니다. 이것을 모니터링 목적으로 다른 프로그램의 매개 변수로 사용하고 있습니다.
내가 부딪친 문제는 2 단계에서 $ 1 등을 사용하고 있고 인쇄 명령에 오류가있어서 "awk '{print $ 5}'가 작동하지 않는다는 것입니다. 나는 grep / sed / cut 버전을 찾고있었습니다 작동하는 것 같습니다 :
iostat | grep "hdisk1 " | sed -e's/ */ /g' | cut -d" " -f 5
그들이 "단 하나"를 의미한다고 생각했을 때 []는 "0 이상"이었습니다. 브래킷을 제거하면 작동합니다. 세 가지 좋은 답변은 실제로 "답변"을 선택하기 어렵게 만듭니다.