循环内有awk语句只执行一次
Perl code
#!/bin/sh
i=0
while read LINE
do
echo "i= $i"
echo $LINE
done < my.file
以上代码会将my.file文件内容逐行输出。改成以下代码后,循环就只执行一次
Perl code
#!/bin/sh
i=0
while read LINE
do
echo "i= $i"
echo $LINE
echo "region 1 is: `awk '{print $1}'` #增加这一句,本意想输出第一列
done < my.file
结果显示 i=0,增加的语句将整个文本的第一列输出而不是第一行的第一列。
请问,这是为什么?是因为 awk 语句处理的时候会读取整个文本吗?
------解决方案-------------------- echo "region 1 is: `echo $LINE | awk '{print $1}'`"
------解决方案-------------------- C/C++ code
#!/bin/sh
i=0
while read line
do
echo "i=$i"
echo $line
let i=$i+1
done < my.file
while read line
do
echo "i=$i"
echo $line
echo $line | awk '{print "region 1 is:"$1}'
let i=$i+1
done < my.file
------解决方案-------------------- 探讨 打漏了一句 ((i++))。不过上楼已经改过来了。 如果把 echo $line | awk '{print "region 1 is:"$1}' 改成 awk '{print "region 1 is:"$1}' 循环就只执行一次了。这是为什么。
------解决方案-------------------- 探讨 打漏了一句 ((i++))。不过上楼已经改过来了。 如果把 echo $line | awk '{print "region 1 is:"$1}' 改成 awk '{print "region 1 is:"$1}' 循环就只执行一次了。这是为什么。