![변수의 인스턴스 수를 계산한 다음 bash 스크립트에서 행/열 형식을 다시 지정합니다.](https://linux55.com/image/149916/%EB%B3%80%EC%88%98%EC%9D%98%20%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4%20%EC%88%98%EB%A5%BC%20%EA%B3%84%EC%82%B0%ED%95%9C%20%EB%8B%A4%EC%9D%8C%20bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%ED%96%89%2F%EC%97%B4%20%ED%98%95%EC%8B%9D%EC%9D%84%20%EB%8B%A4%EC%8B%9C%20%EC%A7%80%EC%A0%95%ED%95%A9%EB%8B%88%EB%8B%A4..png)
일괄 커밋 스크립트에서 아래와 같이 "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