[xxx@localhost ~]$ while read line1; do awk '{print $0}'; done < test_read
1234 456
[xxx@localhost ~]$ while read line1; do echo "$line1";awk '{print $0}'; done < test_read1
123 1234
234 456
read,echo,awk三者不同组合得到的结果不一样,但不明白,附实例
-
- 帖子: 71
- 注册时间: 2014-04-28 14:33
- 系统: ubuntu12¢os6
read,echo,awk三者不同组合得到的结果不一样,但不明白,附实例
- zhw2101024
- 帖子: 1849
- 注册时间: 2009-03-28 16:10
- 系统: Arch debian win7
- 联系:
Re: read,echo,awk三者不同组合得到的结果不一样,但不明白,附实例
输入文件什么样的?
read每一次读的不一定是一行,具体可以搜索IFS
read每一次读的不一定是一行,具体可以搜索IFS
为什么我的问题总是没有人回答?
金钱、责任与荣誉:OpenSSL主席谈心脏出血
拥有丰富API接口和广泛程序支持的dropbox云同步,点此注册,开始就比别人多500兆,我的空间也会增加。谢啦
==========我的作品==========
我做的一个面向开发者的gnome-shell扩展,有js基础又想自己调整gnome-shell功能的可以尝试一下
gnome-shell扩展开发入门,gnome-shell扩展系统扫盲帖
金钱、责任与荣誉:OpenSSL主席谈心脏出血
拥有丰富API接口和广泛程序支持的dropbox云同步,点此注册,开始就比别人多500兆,我的空间也会增加。谢啦
==========我的作品==========
我做的一个面向开发者的gnome-shell扩展,有js基础又想自己调整gnome-shell功能的可以尝试一下
gnome-shell扩展开发入门,gnome-shell扩展系统扫盲帖
-
- 帖子: 71
- 注册时间: 2014-04-28 14:33
- 系统: ubuntu12¢os6
Re: read,echo,awk三者不同组合得到的结果不一样,但不明白,附实例
文件内容很简单:zhw2101024 写了:输入文件什么样的?
read每一次读的不一定是一行,具体可以搜索IFS
123 1234
234 456
这根分割符有什么关系
- astolia
- 论坛版主
- 帖子: 6399
- 注册时间: 2008-09-18 13:11
Re: read,echo,awk三者不同组合得到的结果不一样,但不明白,附实例
一个是test_read,另一个test_read1,确定两个文件内容一致?
-
- 帖子: 71
- 注册时间: 2014-04-28 14:33
- 系统: ubuntu12¢os6
Re: read,echo,awk三者不同组合得到的结果不一样,但不明白,附实例
astolia 写了:一个是test_read,另一个test_read1,确定两个文件内容一致?
代码: 全选
[xxx@localhost ~]$ while read line1; do awk '{print $0}'; done < test_read1
234 456
[xxx@localhost ~]$ while read line1; do echo "$line1";awk '{print $0}'; done < test_read1
123 1234
234 456
[xxx@localhost ~]$ cat test_read1
123 1234
234 456
- astolia
- 论坛版主
- 帖子: 6399
- 注册时间: 2008-09-18 13:11
Re: read,echo,awk三者不同组合得到的结果不一样,但不明白,附实例
这才对嘛。一楼的肯定是读了两个不同的文件。糊涂的小强 写了:astolia 写了:一个是test_read,另一个test_read1,确定两个文件内容一致?代码: 全选
[xxx@localhost ~]$ while read line1; do awk '{print $0}'; done < test_read1 234 456 [xxx@localhost ~]$ while read line1; do echo "$line1";awk '{print $0}'; done < test_read1 123 1234 234 456 [xxx@localhost ~]$ cat test_read1 123 1234 234 456
标准输入被重定向到了test_read1,read和awk都从里面读数据。
在第一次循环时,read首先读了一行“123 1234”,存放到line1变量中,然后awk再读剩余的一行“234 456”。
在第二次循环时,read没有读到东西,返回非0值,退出while循环。
所以如果不输出line1的内容就只有awk读到的234 456
-
- 帖子: 71
- 注册时间: 2014-04-28 14:33
- 系统: ubuntu12¢os6
Re: read,echo,awk三者不同组合得到的结果不一样,但不明白,附实例
等等,我无法接受这样的逻辑,read和awk之间有关联吗,read读过的,awk就知道只去读第二行,这是什么机制astolia 写了:这才对嘛。一楼的肯定是读了两个不同的文件。糊涂的小强 写了:astolia 写了:一个是test_read,另一个test_read1,确定两个文件内容一致?代码: 全选
[xxx@localhost ~]$ while read line1; do awk '{print $0}'; done < test_read1 234 456 [xxx@localhost ~]$ while read line1; do echo "$line1";awk '{print $0}'; done < test_read1 123 1234 234 456 [xxx@localhost ~]$ cat test_read1 123 1234 234 456
标准输入被重定向到了test_read1,read和awk都从里面读数据。
在第一次循环时,read首先读了一行“123 1234”,存放到line1变量中,然后awk再读剩余的一行“234 456”。
在第二次循环时,read没有读到东西,返回非0值,退出while循环。
所以如果不输出line1的内容就只有awk读到的234 456
- astolia
- 论坛版主
- 帖子: 6399
- 注册时间: 2008-09-18 13:11
Re: read,echo,awk三者不同组合得到的结果不一样,但不明白,附实例
本来有若干行数据,read读了一行后,这行数据就被read拿走了,awk就只能从剩下的里面读了糊涂的小强 写了:等等,我无法接受这样的逻辑,read和awk之间有关联吗,read读过的,awk就知道只去读第二行,这是什么机制
你回想一下C里面的基本I/O函数,也是一样的嘛。
先用scanf读了数据,再用getchar也不会读到scanf得到的数据。
先用fscanf读了数据,再用fgetc也不会读到fscanf得到的数据。
具体从是文件读还是从终端读,底层实现会不同,但效果都是这样的
-
- 帖子: 71
- 注册时间: 2014-04-28 14:33
- 系统: ubuntu12¢os6
Re: read,echo,awk三者不同组合得到的结果不一样,但不明白,附实例
谢谢astolia 写了:本来有若干行数据,read读了一行后,这行数据就被read拿走了,awk就只能从剩下的里面读了糊涂的小强 写了:等等,我无法接受这样的逻辑,read和awk之间有关联吗,read读过的,awk就知道只去读第二行,这是什么机制
你回想一下C里面的基本I/O函数,也是一样的嘛。
先用scanf读了数据,再用getchar也不会读到scanf得到的数据。
先用fscanf读了数据,再用fgetc也不会读到fscanf得到的数据。
具体从是文件读还是从终端读,底层实现会不同,但效果都是这样的