Chinaunix

标题: while read awk 循环问题 [打印本页]

作者: 609854    时间: 2012-09-13 14:53
标题: while read awk 循环问题
  1. cat /etc/hosts | grep i |while read line
  2. do
  3. awk '{print $1}'
  4. echo "a"
  5. done
复制代码
  1. 16.73.247.1
  2. 16.187.16.19
  3. 16.173.24.28
  4. 16.173.20.4
  5. 16.187.17.5
  6. 16.173.26.93
  7. 16.173.21.30
  8. 16.173.24.8
  9. 16.173.26.5
  10. 16.173.25.5
  11. 16.173.25.6
  12. a
复制代码
问题: 这个循环怎么是这样的 ,而不是 print $1 再echo a ,再print $1 再echo a ,...
作者: jason680    时间: 2012-09-13 15:32
回复 1# 609854

how about this

# awk '/i/{print $1}' /etc/hosts

   
作者: 609854    时间: 2012-09-13 15:36
回复 2# jason680


16.73.247.1
16.187.16.19
16.173.24.28
16.173.20.4
16.187.17.5
16.173.26.93
16.173.21.30
16.173.24.8
16.173.26.5
16.173.25.5
16.173.25.6
作者: zooyo    时间: 2012-09-13 15:38
提示: 作者被禁止或删除 内容自动屏蔽
作者: kk5234    时间: 2012-09-13 15:48
本帖最后由 kk5234 于 2012-09-13 15:51 编辑

回复 3# 609854
  1. awk '/i/{print $1}' /etc/hosts |while read line
  2. do
  3. echo $line
  4. echo a
  5. done
复制代码

作者: 609854    时间: 2012-09-13 15:57
回复 4# zooyo


    能用,可以不知道 怎么循环的
作者: 609854    时间: 2012-09-13 15:58
回复 5# kk5234
  1. 16.173.246.72
  2. a
  3. 16.157.131.252
  4. a
  5. 16.157.133.198
  6. a
  7. 16.173.247.38
  8. a
  9. 16.173.244.115
  10. a
  11. 16.173.246.115
  12. a
复制代码
可是我 1楼那个 ,为什么 是那样的结果呢
作者: kk5234    时间: 2012-09-13 16:03
本帖最后由 kk5234 于 2012-09-13 16:04 编辑

回复 7# 609854

awk是一行一行往下执行的,执行完所有输入行后才执行echo "a"
   
作者: qq5910225    时间: 2012-09-16 22:16
  1. cat /etc/hosts | grep i |while read line
  2. do
  3. echo ${line}|awk '{print $1}'
  4. echo "a"
  5. done
复制代码
改了一下。你写的那个每行都存变量里了,awk啥都没取出来。而且相当不明白你这种脱了裤子放屁的写法。
作者: dn833    时间: 2012-09-16 22:43
  1. awk '/i/{print $1"\na"}' /etc/hosts
复制代码

作者: ly5066113    时间: 2012-09-16 23:05
回复 1# 609854


    经典的IO重定向问题,看SHELL版新手导航9楼,“关于while read只执行一次的问题”
作者: blackold    时间: 2012-09-17 13:02
回复 11# ly5066113


    嗯,你来过了。

   经典问题!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2