plt_metgrid_try.000001.png
次の544ファイルのリストがあります。
plt_metgrid_try.000544.png
544ファイルの長いリストから8つのファイルごとに分離する必要があります。
例えば。
list 1:: plt_metgrid_try.000001.png,
plt_metgrid_try.000009.png,
plt_metgrid_try.000017.png
list 2:: plt_metgrid_try.000002.png,
plt_metgrid_try.000010.png,
plt_metgrid_try.000018.png
.
.
.
.
.
.
list 8:: plt_metgrid_try.000008.png,
plt_metgrid_try.000016.png,
plt_metgrid_try.000024.png
今回も8つのリストを作成し、この長いリストを分離する必要があります。
どうやって分けるの?
解決するよう案内します。よろしくお願いします。
答え1
ループのないawk
変形
awk '{print $0 > "file_"NR%8+1".lst" }' file
GNUのsed
代替
for n in {0..7}; do sed -n "$n~8p" file > "$n.lst"; done
編集する
以下のコメントを見ると、これが欲しいものかもしれません...
ls -d -- *.png | awk '{print $0 > "file_"NR%8+1".lst" }'
答え2
1行に1つのファイルを想定します。
for n in {0..7} ; do awk "(NR%8)==$n {print}" <BigFile.lst >File-$n.lst ; done
答え3
plt_metgrid_try.000001.pngからplt_metgrid_try.000544.pngまでの544個のファイル名が与えられたら、中括弧拡張を使用してksh93、bash、またはzshに8つの配列を割り当てることができます。
list1=(plt_metgrid_try.000{001..544..8})
list2=(plt_metgrid_try.000{002..544..8})
list3=(plt_metgrid_try.000{003..544..8})
list4=(plt_metgrid_try.000{004..544..8})
list5=(plt_metgrid_try.000{005..544..8})
list6=(plt_metgrid_try.000{006..544..8})
list7=(plt_metgrid_try.000{007..544..8})
list8=(plt_metgrid_try.000{008..544..8})
中括弧拡張は一致しない単純なテキスト拡張であるため、このリストのファイル名は存在する場合と存在しない場合があります。ここで支柱の拡張は、与えられた数字から始めて8ずつ増加し、544まで上がります。