Bash
將一行值轉換為具有編號順序的多行
以下變數包括例如此值
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