![将子字符串参数传递给 awk](https://linux22.com/image/53648/%E5%B0%86%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%8F%82%E6%95%B0%E4%BC%A0%E9%80%92%E7%BB%99%20awk.png)
我需要使用 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
你有两个选择
在 awk 中应用子字符串
$ awk -v filestem="$file--$each" \ '{filename = substr(filestem, 3, 6);print >> filename}'
设置
$file--$each
为一个变量,然后对该变量进行子字符串化$ filestem="$file--$each" $ awk -v filestem="${filestem:2:5}" \ '{filename = filestem; print >> filename}'