Linux 下 Shell 命令 IFS 分隔符 – 应用场景 && 解决办法

文章目录

  • Linux 下 Shell 命令 IFS 分隔符 -- 应用场景 && 解决办法
    • 场景一 -- 变量输出
      • 问题
        • 问题描述
        • 测试文件
        • 操作
      • 解决办法
        • 通过定义 **`IFS`** 分隔符解决
    • 场景二 -- 文件读取
      • 问题
        • 问题描述
        • 测试文件
        • 操作
      • 解决办法
        • 方法一:定义 **`IFS`** 分隔符
        • 方法二:**`while read`** 方式解决
    • 参考

场景一 – 变量输出

问题

问题描述

  通过 "cat" 读取文件行,作为变量后,通过 echo 输出变量,变量值中 "相连的多个空格" 被 "合并为一个空格" 输出。

测试文件

$ cat test_IFS1.txt
a b c d e f  g   h    i
1 2 3    4    5    6

操作

$ line=`tail -1 test_IFS1.txt` && echo ${line}
1 2 3 4 5 6             # 输出结果中,空格被合并了

解决办法

通过定义 IFS 分隔符解决

$ IFS="\n" && line=`tail -1 test_IFS1.txt` && echo ${line} && unset IFS
1 2 3    4    5    6

场景二 – 文件读取

问题

问题描述

'cat 命令' 读取文件,通过 'for 循环' 输出每行内容,当行中存在空格,'echo 输出' 异常。

测试文件

$ cat test_IFS2.txt
line1     ---     word1 word2 word3 word4
line2     ---     word1 word2 word3 word4
line3     ---     word1 word2 word3 word4
line4     ---     word1 word2 word3 word4

操作

$ for line in `cat test_IFS2.txt`; do echo ${line}; done
line1
---
word1
word2
word3
word4
line2
---
word1
word2
word3
word4
line3
---
word1
word2
word3
word4
line4
---
word1
word2
word3
word4

解决办法

方法一:定义 IFS 分隔符

  • IFS=$'\n' – 输出正常
# IFS=$'\n' -- 输出正常
$ IFS=$'\n' && for line in `cat test_IFS2.txt`; do echo ${line}; done && unset IFS
line1     ---     word1 word2 word3 word4
line2     ---     word1 word2 word3 word4
line3     ---     word1 word2 word3 word4
line4     ---     word1 word2 word3 word4
  • 说明
- IFS='\n' -- 将字符 n 作为 IFS 的换行符
- IFS=$"\n" -- \n确实通过 '$' 转化为了换行符,但仅当被解释时(或被执行时)才被转化为换行符- IFS=$'\n' -- 输出正常

方法二:while read 方式解决

$ cat test_IFS2.txt | while read line; do echo ${line}; done
line1 --- word1 word2 word3 word4
line2 --- word1 word2 word3 word4
line3 --- word1 word2 word3 word4
line4 --- word1 word2 word3 word4

参考

  • shell命令之 IFS 分隔符;cat逐行读取文件

Linux 下 Shell 命令 IFS 分隔符 -- 应用场景 解决办法相关推荐

  1. linux命令执行的通过程,Linux下shell命令执行过程简介

    浅析linux 下shell命令执行和守护进程 执行shell脚本有以下几种方式 1.相对路径方式,需先cd到脚本路径下 [root@banking tmp]# cd /tmp [root@banki ...

  2. linux中安shell怎么传入参数,【linux】linux 下 shell命令 执行结果赋值给变量【两种方式】...

    方法1:[通用方法] 使用Tab键上面的反引号 例子如下: find命令 模糊查询在/apps/swapping目录下 查找 文件名中包含swapping并且以.jar结尾的文件 使用反引号 引住命令 ...

  3. linux调用一个函数失败 打印错误,linux下settimeofday函数调用失败,何故?解决办法...

    当前位置:我的异常网» C语言 » linux下settimeofday函数调用失败,何故?解决办法 linux下settimeofday函数调用失败,何故?解决办法 www.myexceptions ...

  4. Linux 下 Shell 命令的分类及用法

    当你打算真正操纵好你的 Linux 系统,没有什么能比命令行界面更让你做到这一点.为了成为一个 Linux 高手,你必须能够理解 Shell命令的不同类型,并且会在终端下正确的使用它们. 在 Linu ...

  5. Linux下shell命令:ps

    Linux速查手册. 最近整理了一下linux下的shell命令,为什么要整理呢?因为在十几年的IT工作中总遇到要查看某个命令的用法的问题,早先的处理方式是去百度一下,后来感觉百度查到的内容不太准确和 ...

  6. Linux下shell命令:top

    小推广:Linux速查手册. 最近整理了一下linux下的shell命令,为什么要整理呢?因为在十几年的IT工作中总遇到要查看某个命令的用法的问题,早先的处理方式是去百度一下,后来感觉百度查到的内容不 ...

  7. Linux下Shell命令小结(转载自StartOS,【原来的雨林木风】)

    本文转载自:StartOS,http://www.startos.org/help_11.html. 今天在看新闻时看到雨林木风操作系统什么更新了啊,改名了啊,这些都没有怎么关注, 就把左边的选项卡一 ...

  8. linux下shell命令之hwclock

    转载:http://blog.gesha.net/archives/221/ #linux系统时间和硬件时钟问题(date和hwclock) ##总结一下hwclock,这个容易晕: 1)/etc/s ...

  9. 【Linux】linux中某个命令找不到的解决办法

    问题 在linux系统中执行 php -v,提示: 解决办法: 1.查看当前系统的环境变量 php 安装好后,直接执行 php 时,系统首先会去/usr/bin下寻找命令,如果不在这个目录中,当然就会 ...

最新文章

  1. Analysis Services基础知识——深入SQL Server 2008
  2. selenium代码练习
  3. [云炬创业基础笔记]第二章创业者测试9
  4. [小程序]小程序框架的简单页面布局
  5. MySQL优化:数据量很大,分页查询很慢,有什么优化方案?
  6. php编写用户登录页面,js+php实现静态页面实时调用用户登陆状态的方法
  7. 广州海珠区计算机学校,2019广州海珠区电脑派位和对口直升表
  8. 19张图带你梳理SpringCloud体系中的重要知识点!
  9. SpriteKit游戏开发适配iPad/iPhone6/7/8/Plus及iPhoneX的尺寸及安全区域
  10. centos 6.5 php nginx,CentOS6.5上安装nginx与php5.5
  11. jave 逻辑运算 vs 位运算 + Python 逻辑运算 vs 位运算
  12. Ubuntu中ssh远程报错:packet_write_wait: Connection to 192.168.163.190 port 22: Broken pipe lost connection
  13. 基于javaweb仓库管理系统简易课程报告-软件工程
  14. 阿里巴巴2019实习生招聘正式启动
  15. 小米路由器4a开发版固件_小米路由器4a刷第三方固件
  16. excel如何转化成word文件
  17. 微信小程序开发实战3 使用Go语言开发Web服务
  18. 这三个音频变声编辑软件教你怎么给音频变声
  19. java foxpro_面向对象的语言主要包括C、Java、VB、FoxPro、Python、R等。
  20. stata怎么画分类图_Stata中的图形制作(绝对自己总结)

热门文章

  1. borders.GetItem()方法 获取斜线Border (VC在Excel中画斜线格)
  2. 已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号 升序排序
  3. 【Leetcode刷题Python】40. 组合总和 II
  4. 大疆精灵4多光谱无人机P4M影像辐射定标方法(三)
  5. ubuntu18.04安装caffe-cpu版
  6. 半导体初创企业中的RISC-V
  7. php ecos框架,GitHub - shopex/luban-desktop: A PHP Framework For Luban Web Artisans
  8. Normalized Discounted Cumulative Gain
  9. 接口自动化参数化(一)
  10. php地区代码吗,将国家/地区名称转换为国家/地区代码缩写php