bash程序中的AWK命令

时间:2013-11-29 13:27:02

标签: bash awk

这是我的计划:

for ((i=1;i<=300;i++)); do

  awk 'NR==$i{print}' file.dat > fileB.dat

done

file.dat包含300行,我想保存在不同的文件中, 但是NR==$i不起作用,没有打印任何内容。

我没有看到什么是错的。 谢谢

2 个答案:

答案 0 :(得分:4)

单引号可防止扩展,因此$i不会扩展为数字。改为使用双引号。

但是,不是在循环中多次调用awk,而是使用像这样的单awk更有效:

awk 'NR<=300 {print > NR".dat"}' file.dat

这会将每一行写入不同的文件。

答案 1 :(得分:2)

尝试:

for i in {1..300}; do
    awk "NR==$i{print}" file.dat > fileB.dat
done

单引号',阻止shell扩展变量,在本例中为i