한 행의 값을 번호 순서에 따라 여러 행으로 변환

한 행의 값을 번호 순서에 따라 여러 행으로 변환

예를 들어 다음 변수에는 이 값이 포함됩니다.

echo $SERVERS


server1,server2,server3,server4,server5

다른 라인으로 파이프하고 싶을 때 다음을 수행합니다.

echo $SERVERS | tr ',' '\n'

server1
server2
server3
server4
server5

( echo $SERVERS | tr ',' '\n' | ..... )이제 다음과 같은 예상 결과를 인쇄하기 위해 다른 파이프를 추가하고 싶습니다.

1  ………………  server1
2  ………………… server2
3  ………………… server3
4  ………………… server4
5  ………………… server5
6  ………………  server6
7  ………………… server7
8  ………………… server8
9  ………………… server9
10 ………………… server10
11 ………………… server11
12 ………………… server12

어떻게 해야할지 모르겠지만 ncos와 같은 명령을 사용할 수도 있습니다.

어떤 제안이 있으십니까?

답변1

awk를 사용하세요:

$ servers='server1,server2,server3,server4,server5'

$ awk -v RS=, '{print NR "........" $0}' <<<"$servers"
1........server1
2........server2
3........server3
4........server4
5........server5

또는 왼쪽 패딩을 사용하여 줄 번호를 출력합니다.

awk -v RS=, '{printf "%3d........%s\n",NR,$0}' <<<"$servers"

3(서버 목록의 크기에 따라 적절한 필드 너비를 선택하십시오).

답변2

cat -n <<< ${SERVERS//,/$'\n'} 
     1  server1
     2  server2
     3  server3
     4  server4
     5  server5

답변3

$ awk -F',' '{for (i=1; i<=NF; i++) printf "%-2d ........ %s\n", i, $i}' <<<"$servers"
1  ........ server1
2  ........ server2
3  ........ server3
4  ........ server4
5  ........ server5

관련 정보