美文网首页
1.16 字段分隔符和迭代器

1.16 字段分隔符和迭代器

作者: 拙言_Coder | 来源:发表于2019-03-05 13:57 被阅读0次

《Linux Shell 脚本攻略(第 2 版)》读书笔记

字段分隔符

内部字段分隔符(Internal Field Seprator,IFS),是当前shell环境使用的默认定界字符串。对于 IFS 的定义如下:

The Internal Field Separator that is used for word splitting after expansion and to split lines into words with the read builtin command. The default value is <space><tab><new-line>.

IFS 的作用如下:

  • IFS作为Shell的内置变量,是一个用于分割字段的字符列表。
  • Shell把变量IFS内的每一个字符都当做是一个分割符(delimeter),用这些字符作为每一个字段的结束符来进行分割。
  • 如果IFS没有设置,或者IFS的值被设置为“ \t\n”(space, tab和 newline),那么操作对象的开始和结束处的所有space, tab和newline序列都将被忽略,但是操作对象中间的space, tab和newline序列会作为界定符工作。
  • 如果IFS值不是默认值(例如程序中对IFS进行设置过),只有出现在IFS内的空白字符(可能是space, tab或newline中的一个或几个)才会在单词开始和结束处被忽略,这里说的是单词,而不是整个操作对象。
  • IFS内的非空白字符多个连续出现时,每个非空白字符会被当做单独的分隔符看待,但是多个连续的空白字符会被当做一个分隔符看待。
  • 如果IFS为空(“null”),则不会进行单词分割。

以上几点参考了网上的这篇文章《详细解析Shell中的IFS变量》

查看 IFS 的默认值

$ echo -n "$IFS" | hexdump
0000000 20 09 0a    #0x20, 0x09和0x0a分别对应于空格(space), 水平制表符(tab)和换行符(newline)的值
0000003 

演示 IFS 的用法

#!/bin/bash

line="root:x:0:0:root:/root:/bin/bash"
oldIFS=$IFS
IFS=":"
count=0

for item in $line; do
  [ $count -eq 0 ] && user=$item;
  [ $count -eq 6 ] && shell=$item;
  let count++
done

IFS=$oldIFS
echo $user\'s shell is $shell

输出:

root's shell is /bin/bash

迭代器

for 循环

for…in

for var in list; do #list可以是一个字符串,也可以是一个序列(如:{a..z})
    #循环体
done

C 风格 for 循环

for((i=0;i<10;i++)) {
    #循环体
}

while 循环

while condition; do #condition为真,则进入循环;否则退出
    #循环体
done

until 循环

x=0;
until [ $x -eq 9 ]; do #x的值等于9时退出循环
    let x++; echo $x;
done

相关文章

  • 第1章-小试牛刀(16字段分隔符与迭代器)

    1.16字段分隔符与迭代器 内部字段分隔符是shell脚本编程中的一个重要概念。在处理文本数据时,它的作用可不小。...

  • 1.16 字段分隔符和迭代器

    《Linux Shell 脚本攻略(第 2 版)》读书笔记 字段分隔符 内部字段分隔符(Internal Fiel...

  • awk

    字段和记录分隔符变量 变量描述FS输入字段分隔符,默认是空格OFS输出字段分隔符 默认也是空格RS输入行分隔符,默...

  • linux awk命令

    F(指定字段分隔符) 默认使用空格作为分隔符。 FS(字段分隔符) 默认是空格和制表符。1,$2 表示第一个字段,...

  • 再探gawk

    使用变量 内建变量内建变量FS和OFS分别是输入字段分隔符和输出字段分隔符。 FIELDWIDTHS变量允许不靠字...

  • awk命令设置多个FS

    awk中FS代表输入字段分隔符,可以通过|设置多个不同的字段分隔符

  • hive的列分隔符和行分隔符的使用

    hive中在创建表时,一般会根据导入的数据格式来指定字段分隔符和列分隔符。一般导入的文本数据字段分隔符多为逗号分隔...

  • hive字段分隔符和数组分隔符

    hive默认字段分隔符为 " \001",常用。数组分隔符常用 " \002"。示例:

  • 迭代器

    本节实验我们将为大家讲解迭代器,主要介绍 5 种常见迭代器:输入、输出迭代器,前向逆向迭代器,双向迭代器和随机迭代...

  • 迭代器模式

    内部迭代器和外部迭代器 简单地讲,内部迭代器就是类似 forEach 的迭代器,其内部迭代逻辑已经制定好,只要传入...

网友评论

      本文标题:1.16 字段分隔符和迭代器

      本文链接:https://www.haomeiwen.com/subject/zfgnuqtx.html