这是我的计划:
for ((i=1;i<=300;i++)); do
awk 'NR==$i{print}' file.dat > fileB.dat
done
file.dat
包含300行,我想保存在不同的文件中,
但是NR==$i
不起作用,没有打印任何内容。
我没有看到什么是错的。 谢谢
答案 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
。