Shell:如何遍历包含空格的文本
翻译自Looping Through a File that Contains Spaces – Bash for Loop
处理包含空格或特殊字符的文件是每个使用Linux的人都应必须掌握的。本文我们将讨论如何在带有空格的文件上使用for循环。
测试文本如下:
This line has spaces
these
do
not
现在,我们使用for循环来迭代这个文本。当我们执行for循环时,shell会看到第一行的空格,并假设每一行都是不同的迭代。
[root@test ~]# for i in $(cat test);do echo $i;done
This
line
has
spaces
these
do
not
IFS定义了在分隔单词时用作分隔的字符或字符集。
维基百科:对于Unix操作系统的许多命令行解释器(“shell”),内部字段分隔符(简称IFS)是指一个变量,该变量定义用于将模式拆分为某些操作的标记的字符。
默认情况下,IFS(字段分隔符)的值为<space><tab><newline>
。因此,当shell看到第一行中的空格时,它将该行划分为四个标记(四个单词)。
修改IFS的值来满足我们的需求
IFS是一个环境变量。在更改环境变量之前,最好的做法是保存它们的内容。这样就可以轻松地将它们设置为默认值。
首先,我们先将IFS变量的值保存到OLDIFS中。
OLDIFS=$IFS
我们可以手动设置IFS成任何我们想要的值。在这种情况下,我们需要将字段分隔符作为换行符。我们可以像任何变量一样设置IFS。
IFS=<our value>
要将IFS设置为换行符,我们可以使用命令替换从echo命令获取换行符输出。
IFS=`echo -e "\n"`
echo -e "\n"
的输出是一个换行符。用于反引号封装,将shell命令的输出作为变量IFS。
现在,当我们执行相同的for循环时,shell将通过换行符来分隔文本。
[root@test ~]# for i in $(cat test); do echo $i; done
This line has spaces
these
do
not
Shell:如何遍历包含空格的文本的更多相关文章
- Shell第二篇:正则表达式和文本处理工具
一 什么是正则 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 生活中处处都是正则: 比如我们描述:4条腿 ...
- Linux 下如何处理包含空格和特殊字符的文件名
Linux 下如何处理包含空格和特殊字符的文件名 作者: Avishek Kumar 译者: LCTT zpl1025 | 2015-07-08 07:47 评论: 12 收藏: 9 分享: 1 ...
- shell脚本之正则表达和文本处理(文本处理三剑客:1、grep 2、sed 3、awk)
文本处理三剑客:1.grep 2.sed 3.awk 一.grep:(过滤) grep的使用,主要的参数有: -n :显示行号:-o :只显示匹配的内容-q :静默模式,没有任何输出,得用e ...
- Linux如何查找处理文件名后包含空格的文件
Linux如何查找处理文件名后包含空格的文件 当Linux下文件名中出现空格这类特殊情况话,如何查找或确认那些文件名后有空格呢? 又怎么批量替换处理掉这些空格呢? 方法1: 输入文件名后使用Tab ...
- 使用innerHTML获取HTML代码时,HTML标记属性的双引号好多都消失不见了,原来是属性值中包含空格才会保留双引号
最近搞的一个项目中所使用的方式比较奇怪,用Label显示HTML内容,然后不断地使用JS把Label的innerHTML复制到TextBox中. 但是,昨天发现了一个问题,获取元素值的时候,有时候正常 ...
- [转]Windows中的命令行提示符里的Start命令执行路径包含空格时的问题
转自:http://www.x2009.net/articles/windows-command-line-prompt-start-path-space.html 当使用Windows 中的命令行提 ...
- 处理Properties文件中key包含空格的情况
在这个互联网信息共享的时代,好处是一个问题的很多解决方案都可以从网络上得到,不好的一点就是很多人喜欢复制粘贴也不注明转载出处,不尊重别人的劳动成果,不假思索地把别人的原创复制到自己的博客然后发布,请大 ...
- IDEA 开发环境中设置Subversion,遇到svn安装路径包含空格无法使用版本控制的解决办法
假如你的svn.exe的安装位置是:C:\Program Files\TortoiseSVN\bin\svn.exe,路径中包含空格. 1.File->Settings->Version ...
- SQL Server如何查找表名或列名中包含空格的表和列
最近发现一个数据库中的某个表有个字段名后面包含了一个空格,这个空格引起了一些小问题,一般出现这种情况,是因为创建对象时,使用双引号或双括号的时候,由于粗心或手误多了一个空格,如下简单案例所示: USE ...
随机推荐
- js script all in one
js script all in one 你不知道的 js secret https://html.spec.whatwg.org/multipage/scripting.html https://h ...
- auto embedded component in an online code editor
auto embedded component in an online code editor how to auto open a component in the third parts onl ...
- linux bash shell & lsof & grep & ps
linux bash shell & lsof & grep & ps lsof list all open files # lsof & grep $ lsof -P ...
- 算法型稳定币USDN有什么魔力引发市场热潮?
最近比特币重新突破了8万大关,区块链行业又再次火爆起来,吸引了圈内圈外人的火热讨论,而这其中市场投资者讨论最频繁的就要属算法型稳定币USDN了. USDN是基于NGK.IO区块链中的稳定币, 1枚US ...
- SPEC-RFC3261总述
最近学习VoLTE(Voice Vver LTE)相关知识,而学习VoLTE必须要学相关的协议,最基础的就是RFC3261,RFC3261的全称是:SIP: Session Initiation Pr ...
- JS相关基础
1. ES5和ES6继承方式区别 ES5定义类以函数形式, 以prototype来实现继承 ES6以class形式定义类, 以extend形式继承 2. Generator了解 ES6 提供的一种异步 ...
- c# 全选和批量修改
//全选 function checkAll(){ var items = document.getElementsByTagName("input"); for(var i =0 ...
- 自己的Scrapy框架学习之路
开始自己的Scrapy 框架学习之路. 一.Scrapy安装介绍 参考网上资料,先进行安装 使用pip来安装Scrapy 在开始菜单打开cmd命令行窗口执行如下命令即可 pip install Scr ...
- idea加载maven项目遇见的坑---2
idea每次加载完一个maven项目,都需要重新配置 file>>>Settings 然后继续找 还有就是配置项目的时候 配置项目jdk 最后需要注意,有时候你会发现都设置完了,但是 ...
- Linux解压缩相关命令
Linux解压缩相关命令 运行级别: 0:关机 1:单用户 2:多用户无网络连接 3:多用户有网络连接 4:系统保留 5:图形界面 6:系统重启 通过init[0123456]来切换不同的运行级别 g ...