Bash

將一行值轉換為具有編號順序的多行

  • February 9, 2020

以下變數包括例如此值

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

不知道怎麼做,但可能與nc命令 os 類似

有什麼建議嗎?

使用 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(選擇適合您的伺服器列表大小的欄位寬度)。

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

引用自:https://unix.stackexchange.com/questions/566576