For loop awk:在for语句中使用转义字符

For loop awk:在for语句中使用转义字符,for-loop,escaping,awk,For Loop,Escaping,Awk,我有以下awk命令,它工作得非常好: awk 'BEGIN { ORS = " " } {print 22, $1, NR; for(i=2;i<=NF;++i) print $i}{print "\n"}' file awk'BEGIN{ORS=”“}{print 22,$1,NR;for(i=2;i您可以使用 -v parameter=value i、 e.使用 awk -v p=$p ... 像这样: for p in 20 21 22 do awk -v p=$p 'BEGI

我有以下awk命令,它工作得非常好:

awk 'BEGIN { ORS = " " } {print 22, $1, NR; for(i=2;i<=NF;++i) print $i}{print "\n"}' file

awk'BEGIN{ORS=”“}{print 22,$1,NR;for(i=2;i您可以使用

-v parameter=value
i、 e.使用

awk -v p=$p ...
像这样:

for p in 20 21 22
do
awk -v p=$p 'BEGIN { ORS = " " } [TOO LONG LINE]' file > file$p
done
完整命令:

for p in 20 21 22; do awk -v p=$p 'BEGIN { ORS = " " } {print p, $1, NR; for(i=2;i<=NF;++i) print $i}{print "\n"}' file > file$p; done

for p in 20 21 22;do awk-v p=$p'BEGIN{ORS=”“}{print p,$1,NR;for(i=2;i您可以使用

-v parameter=value
i、 e.使用

awk -v p=$p ...
像这样:

for p in 20 21 22
do
awk -v p=$p 'BEGIN { ORS = " " } [TOO LONG LINE]' file > file$p
done
完整命令:

for p in 20 21 22; do awk -v p=$p 'BEGIN { ORS = " " } {print p, $1, NR; for(i=2;i<=NF;++i) print $i}{print "\n"}' file > file$p; done

forp in 20 21 22;doawk-vp=$p'BEGIN{ORS=”“}{print p,$1,NR;for(i=2;i你的方向是正确的。因为你的awk脚本在'(单引号)内,bash不会用它在脚本中的值替换$p(请参阅高级bash脚本指南-引号)。
您需要执行以下操作之一:
1(建议):

用于20 21 22中的p
做

awk-vp=$p'BEGIN{ORS=”“}{print p,\$1,NR;for(i=2;i您的方向是正确的。因为您的awk脚本在(单引号)内,bash不会用脚本中的值替换$p(请参阅高级bash脚本指南-引号)。 您需要执行以下操作之一: 1(建议):

用于20 21 22中的p
做

awk-vp=$p'BEGIN{ORS=“”}{print p,\$1,NR;for(i=2;我没有在awk脚本中转义
$
。不要在awk脚本中转义
$