Shell编程基础(十)读取多行文本到数组 & 写入多行文本到文件

读取多行文本到数组 & 写入多行文本到文件

读取多行文本到数组

创建一个文本文件,内容如下

1 zhangsan 男 10
2 liis  女 12
3 wangwu 男 17

读取这个文件中所有人的信息

#!/bin/bash
while read u
do
echo $u
done < ./test.txt

上述shell,执行顺序:

  1. 读取文本内容给到 while 循环
  2. while循环将每一行数据交给 read
  3. 由 read 将每一行的数据 给到 变量 u
  4. 最终实现遍历

按性别统计人数

#!/bin/bash
declare -A count_by_sex
while read u
do
sex=`echo $u | awk '{print $3}'`
# 第一种. 分步定义统计变量
#count=`echo $[${count_by_sex[$sex]}+1]`
#count_by_sex[$sex]=`echo $count`

# 第二种. 直接使用数组自增
#let count_by_sex[$sex]++

# 第三种. 将第一种方法融合成一条
count_by_sex[$sex]=`echo $[${count_by_sex[$sex]}+1]`
done < ./test.txt

for i in ${!count_by_sex[@]}
do
echo $i : ${count_by_sex[$i]}
done

写入多行文本到文件

#!/bin/bash
echo "1
2
3
4" > echo_lines.txt

cat <<-FFF > cat_lines.txt
1
2
3
4
FFF

以上两种都能将指定格式的数据写入文本。

需要注意的是
echo 方式引号如果没和数据在一行,会有一个空行

cat 方式说明
<< 表示将FFF 中定义的内容收集到 cat 中
FFF 定义多行文本结束符,通常这个标识符使用 EOF(end of file)并非只能EOF
>/>> cat_lines.txt 将cat 收集到的文本以覆盖/追加的方式重定向到文件 cat_lines.txt 中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值