将子字符串参数传递给 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

你有两个选择

  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}'
    

相关内容