0

外部コマンドからコンマとスペースで区切られたサーバー名のリストを読み取る bash スクリプトがあります。

server_0.example.com, server_1.example.com, ..., server_70.example.com

スクリプトは、その形式のサーバー リストを受け入れる外部コマンドを実行する必要がありますが、一度に 50 サーバーに制限されます。したがって、ほぼ同じサイズの 2 つのリストに分割する必要があります。

server_0.example.com, server_1.example.com, ..., server_35.example.com

server_35.example.com, server_36.example.com, ..., server_70.example.com
4

1 に答える 1

2

これはアプローチになる可能性があります:

awk -F, '{for (i=1; i<=NF/2; i++) printf "%s, ", $i} <-- prints first half
         {printf "\n"} <--- prints new line
         {for (i=NF/2+1; i<=NF; i++) printf "%s, ", $i}  <-- prints second half
         {printf "\n"} <--- prints new line
        '

テスト

$ awk -F, '{for (i=1; i<=NF/2; i++) printf "%s, ", $i} {printf "\n"} {for (i=NF/2+1; i<=NF; i++) printf "%s, ", $i} {printf "\n"}' <<< "server_0.example.com, server_1.example.com, ..., server_70.example.com"
server_0.example.com,  server_1.example.com, 
 ...,  server_70.example.com, 

アップデート

NF が奇数の場合に 1 つの値をスキップしない:

awk -F, '{for (i=1; i<=int(NF/2); i++) printf "%s, ", $i} <-- prints first half
         {printf "\n"} <--- prints new line
         {for (i=int(NF/2)+1; i<=NF; i++) printf "%s, ", $i}  <-- prints second half
         {printf "\n"} <--- prints new line
        '
于 2013-10-14T10:47:05.973 に答える