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 中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下的Shell脚本来创建文件列表并添加多行文本: ``` #!/bin/bash # 创建文件列表 files=("file1.txt" "file2.txt" "file3.txt") # 添加多行文本到每个文件 for file in "${files[@]}" do cat << EOF >> "$file" 第一行文本 第二行文本 第三行文本 EOF done ``` 这个脚本会创建一个包含三个文件名的数组,然后使用一个循环来遍历数组中的每个文件名。在每个文件中,使用`cat`命令和`<<`操作符来添加多行文本。注意,`EOF`是一个标记,用于指示文本块的开始和结束。 ### 回答2: 创建文件列表并添加多行文本Shell脚本可以通过以下步骤实现: 1. 首先,我们需要创建一个空文件列表,用于存储文件名。可以使用`touch`命令创建一个空文件,例如:`touch filelist.txt` 2. 接下来,我们可以使用`echo`命令将多行文本添加到文件中。例如,添加三行文本可以使用以下命令: ``` echo "第一行文本" >> filelist.txt echo "第二行文本" >> filelist.txt echo "第三行文本" >> filelist.txt ``` 其中`>>`表示追加文本文件的末尾。 3. 如果你要添加大量的文本,可以使用循环结构,将文本行作为循环变量,并使用循环来逐行添加到文件中。例如,添加文本可以使用以下Shell脚本: ``` for i in {1..10}; do echo "第${i}行文本" >> filelist.txt done ``` 4. 最后,你可以使用`cat`命令来查看文件的内容,以确保文本已成功添加到文件列表中。例如:`cat filelist.txt` 通过上述步骤,你可以创建一个文件列表,并将多行文本添加到该文件中。记得根据实际需要修改文件名和文本内容。 ### 回答3: 创建文件列表并添加多行文本Shell脚本可以使用以下代码: ```shell #!/bin/bash # 创建一个文件列表 files=("file1.txt" "file2.txt" "file3.txt") # 遍历文件列表来添加多行文本 for file in "${files[@]}" do echo "This is line 1." >> $file echo "This is line 2." >> $file echo "This is line 3." >> $file done ``` 首先,我们使用`files`数组来创建一个包含所有文件名的文件列表。这里我们创建了三个文件:`file1.txt`,`file2.txt`和`file3.txt`。 然后,使用`for`循环来遍历文件列表中的每个文件。在循环中,我们使用重定向运算符`>>`将每行文本追加到对应的文件中。 以上代码将向每个文件添加三行文本,内容分别是: ``` This is line 1. This is line 2. This is line 3. ``` 运行该脚本后,即可完成创建文件列表并添加多行文本的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值