部分文字列パラメータをawkに渡す

部分文字列パラメータをawkに渡す

awkコマンドを使用してファイルを分割し、それに応じて名前を変更する必要があります。 substringコマンドを使用してパラメータをawkコマンドに渡しようとしましたが、失敗しました。

for file in *.csv
do
  split -n 3 -d -a 2 "$file" "$file--"
  for each in $(seq -w 2 10)
  do
        echo $file--$each

  awk -v filestem= ${$file--$each:2:5} '{filename = filestem; print >> filename}' $file--$each
  done
done

ベストアンサー1

あなたには2つの選択肢があります

  1. awkにサブストリングを適用する

    $ awk -v filestem="$file--$each" \
        '{filename = substr(filestem, 3, 6);print >> filename}' 
    
  2. $file--$each変数に設定し、その変数を部分文字列で囲みます。

    $ filestem="$file--$each"
    $ awk -v filestem="${filestem:2:5}" \
        '{filename = filestem; print >> filename}'
    

おすすめ記事