Perlの複数の列を持つLinuxファイルのループコマンド

Perlの複数の列を持つLinuxファイルのループコマンド

以下に「n」個の列を持つfile.txtがあります。ループでコマンドを実行する必要があり、最初の列値と2番目の列値が必要です。完了したら、コマンドを実行して最初と3番目の列の値を取得し、行のすべての列を処理し続けます。

例:

vcloud <ktrcigmv> diskcommand <persistent-disk-1>
vcloud <ktrcigmv> diskcommand <persistent-disk-2>
vlcoud <ktrcsnu1> diskcommand <persistent-disk-1>
vlcoud <ktrcsnu1> diskcommand <persistent-disk-4>
vlcoud <ktrcsnu1> diskcommand <persistent-disk-6>

入力する(?):

ktrcigmv       persistent-disk-1 persistent-disk-2
ktrcsnu1       persistent-disk-1 persistent-disk-4 persistent-disk-6
ktrsapahn       vol-71412041887658--dev-sdd-cc04ce65
ktrai2y5h       persistent-disk-1
ktrcibiy       persistent-disk-1
ktrcigf2       persistent-disk-1
ktrcisxh       persistent-disk-1
ktrsapmam       vol-345052022286--dev-sdb-b5d5bdfd vol-345052022286--dev-sdf-9c91de4d
ktrcie8x       persistent-disk-1
ktrcio3s       persistent-disk-1

ベストアンサー1

使用perlモードawk

<file.txt perl -lae '
   system "vcloud", $F[0], "diskcommand", $_ for @F[1..$#F]'

vcloud field-1 diskcommand field-nそれぞれ実行されますフィールド2..ゲームの最後(配列インデックスは1から1ではなく0から始まるため、perl各行1..$#Fに1つずつあります。)

フィールド区切り文字は、すべてのASCIIスペースシーケンス(スペース、タブ、垂直タブ、フォームフィード、キャリッジリターン)です。各行の先頭と末尾のスペースは無視されます。

おすすめ記事