linux 中while 循环read读入数据 使用IFS指定分割符

 

001、测试数据

[root@pc1 test1]# ls
a.txt
[root@pc1 test1]# cat a.txt        ## 测试数据
d_j j k
d d_kk

 

002、不指定分隔符

[root@pc1 test1]# ls
a.txt
[root@pc1 test1]# cat a.txt                                    ##   测试数据
d_j j k
d d_kk
[root@pc1 test1]# cat a.txt | while read i; do echo $i; done   ## 只给一个变量,默认读入的是整行
d_j j k
d d_kk
[root@pc1 test1]# cat a.txt | while read {i,j}; do echo $i; done   ## 给两个变量,默认以空格或者制表符分割
d_j
d
[root@pc1 test1]# cat a.txt | while read {i,j,k}; do echo $i; done  ## 同上
d_j
d
[root@pc1 test1]# cat a.txt | while read {i,j,k}; do echo $j; done     ## 同上
j
d_kk
[root@pc1 test1]# cat a.txt | while read {i,j,k}; do echo $k; done    ## 多个变量时,默认以空格分割
k

[root@pc1 test1]#

 

003、使用IFS,但是什么也不指定

[root@pc1 test1]# ls
a.txt
[root@pc1 test1]# cat a.txt                            ## 测试数据
d_j j k
d d_kk
[root@pc1 test1]# cat a.txt | while IFS= read i; do echo $i; done   ## 使用IFS,但是什么也不指定,默认读入整行
d_j j k
d d_kk
[root@pc1 test1]# cat a.txt | while IFS= read {i,j}; do echo $i; done   ## 给与两个变量,默认读入整行,第一个变量
d_j j k
d d_kk
[root@pc1 test1]# cat a.txt | while IFS= read {i,j,k}; do echo $i; done   ## 使用3个变量,默认读入整行,
d_j j k
d d_kk
[root@pc1 test1]# cat a.txt | while IFS= read {i,j,k}; do echo $j; done    ## 使用3个变量,读入整行,2变量为空


[root@pc1 test1]# cat a.txt | while IFS= read {i,j,k}; do echo $k; done    ## 同上


[root@pc1 test1]#

 

 

004、使用IFS,并指定分隔符

[root@pc1 test1]# ls
a.txt
[root@pc1 test1]# cat a.txt                         ## 测试数据
d_j j k
d d_kk
[root@pc1 test1]# cat a.txt | while IFS="_" read i; do echo $i; done  ##指定分隔符,给一个变量,变量是整行
d_j j k
d d_kk
[root@pc1 test1]# cat a.txt | while IFS="_" read {i,j}; do echo $i; done   ## 指定分隔符,给2个变量,按照分割符分割
d
d d
[root@pc1 test1]# cat a.txt | while IFS="_" read {i,j,k}; do echo $i; done    ## 同上
d
d d
[root@pc1 test1]# cat a.txt | while IFS="_" read {i,j,k}; do echo $j; done
j j k
kk
[root@pc1 test1]# cat a.txt | while IFS="_" read {i,j,k}; do echo $k; done


 

005、修改测试数据,继续测试

[root@pc1 test1]# ls
a.txt
[root@pc1 test1]# cat a.txt      ## 修改后测试数据
d_j j k_rrtt_ppii
d d_kk_yyy_uuu_www
[root@pc1 test1]# cat a.txt | while IFS="_" read i; do echo $i; done   ## 指定分割符,给一个变量,读入整行
d_j j k_rrtt_ppii
d d_kk_yyy_uuu_www
[root@pc1 test1]# cat a.txt | while IFS="_" read {i,j}; do echo $i; done ##指定分隔符,给两个变量,按照分隔符分割
d
d d
[root@pc1 test1]# cat a.txt | while IFS="_" read {i,j}; do echo $j; done  ## 指定分隔符,给两个变量,按分隔符分割,最后一个变量兜底
j j k_rrtt_ppii
kk_yyy_uuu_www
[root@pc1 test1]# cat a.txt | while IFS="_" read {i,j,k}; do echo $j; done   ## 同上
j j k
kk
[root@pc1 test1]# cat a.txt | while IFS="_" read {i,j,k}; do echo $k; done    ## 同上
rrtt_ppii
yyy_uuu_www

 。

 

posted @ 2023-12-31 21:29  小鲨鱼2018  阅读(650)  评论(0编辑  收藏  举报