只是想知道,假设我将数据存储在名为BookDB.txt的文件中,格式如下:
C++ for dummies:Jared:10.52:5:6
Java for dummies:David:10.65:4:6
每个字段由分隔符"分隔:"。
我如何在第一个字段中保留空格并拥有一个包含以下内容的数组:(' C ++ for dummies'' Java for dummies') ?
非常感谢任何帮助!
答案 0 :(得分:1)
只需使用while循环:
#!/bin/bash
# create and populate the array
a=()
while IFS=':' read -r field _
do
a+=("$field")
done < file
# print the array contents
printf "%s\n" "${a[@]}"
答案 1 :(得分:1)
我在第一次尝试回答时完全误解了你的问题。 awk似乎更适合你的需要。你可以通过简单的脚本获得你想要的东西:
IFS=$'\n' : MYARRAY=($(awk -F ":" '{print $1}' myfile))
-F标志强制:
作为字段分隔符。
echo ${MYARRAY[0]}
将打印:
C++ for dummies
答案 2 :(得分:1)
Ploutox的解决方案几乎是正确的,但是如果没有设置IFS,你将无法获得你所寻求的数组,在这种情况下有两个元素。
注意:他在这篇文章后纠正了他的解决方案。
IFS=$'\n': arr=( $(awk -F':' '{print $1 }' Input.txt ) )
echo ${#arr[@]}
echo ${arr[0]}
echo ${arr[1]}
输出:
2
C++ for dummies
Java for dummies
答案 3 :(得分:0)
$ yes sed -i "s/:/\'\'/" BookDB.txt | head -n100 | bash
这个命令在工作时。这是一个linux命令,在shell上用BookDB.txt
在相同的路径上运行它