添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

一、格式转换

假如我有一个文件叫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)) )
	#这个i前面的$符号必须加,如果不加默认是字符串
	echo "index: $i"
	#下面这两个的$可以不用加,放在bash里面是变色的
	echo "第: $((i + 1)) 个"
	echo ${LISTS[i]}

保存list.sh并执行得到以下结果
size: 3
index: 0
第: 1 个
123
index: 1
第: 2 个
456
index: 2
第: 3 个
789

方法好多,这格式最简单有效的方法

一个简单的shell脚本确实最常用的,有时候我们需要从文本中一行一行读取并存到数组里。假如我有一个文件叫list.txt,如果你是在linux上创建的文件请忽略这个步骤。假如我在windows上编辑过那么格式就不是linux上的unix格式了,我需要先转换格式为unix防止出现意想不到的错误。具体方法请看下面应该会显示文件类型这个时候我们需要借助vim的命令,如下操作按住shift+冒号进入命令模式输入以下命令最后wq保存,再使用file命令查看文件属性就变成unix格式了。没有后面那一段提示了, 将多行结果转换为数组 有时通过匹配截取命令获取到的多行内容,需要遍历,首先将要遍历的内容转换为数组,多行内容只需要通过在执行结果加括号即可转化为数组。 比如我要获取系统里的磁盘。 ls -1 /sys/block | grep -E '(s|h)d[a-z]+' | sort 输出结果如下 root@Storage:~# ls -1 /sys/block | grep -E '(s|h)d[a-z]+' | sort
shell,要读取文件一行并进行分割,可以使用`read`命令和内建的字段分隔符IFS(Internal Field Separator)来实现。 首先,我们需要将文件的内容逐行读取出来。可以使用`while`循环加`read`命令来实现,每次读取文件一行内容,然后进行分割处理。 ```bash #!/bin/bash filename="文件名.txt" # 需要读取的文件名 # 设置IFS为换行符,使read命令按行读取文件内容 IFS=$'\n' # 逐行读取文件内容并分割 while read -r line; do # 根据需求进行分割处理,例如按空格分割 words=($line) # 遍历分割后的字段 for word in "${words[@]}"; do echo "$word" done < "$filename" 在脚本,我们首先设置IFS为换行符,这样`read`命令就可以按行读取文件内容。然后,在循环使用`read`命令读取文件的每一行,并将其赋值给变量`line`。接下来,利用分隔符(默认是空白符)对`line`进行分割处理,这里使用空格作为分隔符。分割后的字段会存储数组`words`。然后,我们可以遍历该数组,对每个字段进行操作,例如输出或赋给其他变量等。 需要注意的是,以上的示例脚本只是演示了一种常见的实现方式,分割的方式可以根据具体的需求进行调整,例如可以使用逗号、制表符等作为分隔符,并相应地修改IFS的值。另外,还需要根据具体情况处理特殊字符和空白行等异常情况。