변수의 인스턴스 수를 계산한 다음 bash 스크립트에서 행/열 형식을 다시 지정합니다.

변수의 인스턴스 수를 계산한 다음 bash 스크립트에서 행/열 형식을 다시 지정합니다.

일괄 커밋 스크립트에서 아래와 같이 "nodefile.123"이라는 파일을 생성했습니다.

Bear-pg0208u33b

Bear-pg0208u33b

Bear-pg0208u33b

Bear-pg0210u19a

Bear-pg0210u19a

Bear-pg0210u07a

내 프로그램이 각 코어에서 실행되는 줄당 항상 1개의 항목이 있으므로 -33b에 3개의 코어, -19a에 2개의 코어, -07a에 1개의 코어가 있습니다. 노드당 코어 수를 계산하고 다음과 같이 데이터 형식을 지정해야 합니다.

bear-pg0208u33b:3:bear-pg0210u19a:2:bear-pg0210u07a:1

지금까지 다음 코드가 있습니다.

노드 파일 정렬.3314190 uniq -c > sorting.txt |

rev="$(awk '{for(i=NF;i>=1;i--) printf "%s ", $i;print ""}' Sorted.txt)"

입력을 계산하고 반전시킵니다. 이제 그것들을 한 줄로 바꾸고 공백을 콜론으로 바꿔야 한다고 생각합니까?

답변1

당신은 그것을 사용할 수 있습니다 awk:

awk 'BEGIN{c=1;OFS=":";ORS=":"} {if(u!=$0 && u!=""){print u,c;u=$0;c=1} else if(u!=$0){u=$0}else{c=c+1}} END{ORS="";print u,c;}' file

그리고 파일에 빈 줄이 없어야 하므로 다음과 같이 제거할 수 있습니다.

sed -i '/^$/d' file

관련 정보