shell读取文本每一行并转成数组
一个简单的shell脚本确实最常用的,有时候我们需要从文本中一行一行读取并存到数组里。假如我有一个文件叫list.txt,如果你是在linux上创建的文件请忽略这个步骤。假如我在windows上编辑过那么格式就不是linux上的unix格式了,我需要先转换格式为unix防止出现意想不到的错误。具体方法请看下面应该会显示文件类型这个时候我们需要借助vim的命令,如下操作按住shift+冒号进入命令模
·
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
一个简单的shell脚本确实最常用的,有时候我们需要从文本中一行一行读取并存到数组里。
一、格式转换
假如我有一个文件叫list.txt,如果你是在linux上创建的文件请忽略这个步骤。假如我在windows上编辑过那么格式就不是linux上的unix格式了,我需要先转换格式为unix防止出现意想不到的错误。具体方法请看下面
file list.txt
应该会显示文件类型
list.txt: UTF-8 Unicode text, with CRLF line terminators
这个时候我们需要借助vim的命令,如下操作
vim list.txt
按住shift+冒号进入命令模式输入以下命令
set ff=unix
最后wq保存,再使用file命令查看文件属性就变成unix格式了。
camera_names.txt: UTF-8 Unicode text
没有后面那一段提示了,说明改成功了。
二、读取保存
假如list.txt里面有123,456,789按照行排列,那么只需要执行下面的命令就行了
#!/bin/bash
LISTS=($(cat list.txt))
echo "size: ${#LISTS[*]}"
#注意index从0开始,以size-1结尾
for i in $( seq 0 $((${#LISTS[*]} - 1)) )
do
#这个i前面的$符号必须加,如果不加默认是字符串
echo "index: $i"
#下面这两个的$可以不用加,放在bash里面是变色的
echo "第: $((i + 1)) 个"
echo ${LISTS[i]}
done
保存list.sh并执行得到以下结果
size: 3
index: 0
第: 1 个
123
index: 1
第: 2 个
456
index: 2
第: 3 个
789
总结
方法好多,这格式最简单有效的方法
更多推荐
已为社区贡献4条内容
所有评论(0)