Linux 如何使用bash将文件中每行的前两个字母添加到列表中?

Linux 如何使用bash将文件中每行的前两个字母添加到列表中?,linux,bash,list,Linux,Bash,List,我有一个文件($ScriptName)。我希望每行的前2个字符都在一个列表中(初学者)。我使用的是bash脚本 我该怎么做 我已经这样声明了我的数组: array=() #Empty array 从以下内容使用指南: 我使用的是manjaro 19和最新内核。要从每行中获取前两个字符,可以使用 cut -c1,2 "$ScriptName" -c1,2表示“位置1和2的输出字符” 我不知道你说的“名单”是什么意思。如果只想创建包含结果的文件,请使用重定向: cut -c1,2 "$Scrip

我有一个文件($ScriptName)。我希望每行的前2个字符都在一个列表中(初学者)。我使用的是bash脚本

我该怎么做

我已经这样声明了我的数组:

array=() #Empty array
从以下内容使用指南:

我使用的是manjaro 19和最新内核。

要从每行中获取前两个字符,可以使用

cut -c1,2 "$ScriptName"
-c1,2
表示“位置1和2的输出字符”

我不知道你说的“名单”是什么意思。如果只想创建包含结果的文件,请使用重定向:

cut -c1,2 "$ScriptName" > Starters
如果要填充数组,只需使用

while IFS= read -r starter ; do Starters+=("$starter") ; done < <(cut -c1,2 "$ScriptName")
尝试此-clean(除了缺少初始化的
ScriptName
)纯Bash代码:

Starters=()
while IFS= read -r line || [[ -n $line ]]; do
    Starters+=( "${line:0:2}" )
done < "$ScriptName"
启动器=()
而IFS=read-r行| |[[-n$line]];做
起动器+=(“${line:0:2}”)
完成<“$ScriptName”
  • 有关在Bash中使用数组的信息,请参见
  • 看 有关在Bash中逐行读取文件的信息
  • 有关
    ${line:0:2}“
    的解释,请参见(特别是关于“范围表示法”的部分)
bash内置命令与
cut
相结合,简化了操作:

cut -c1,2 "$ScriptName" | mapfile Starters

你尝试了什么,它到底是什么问题?我找了一些命令,但是没有发现任何发现。没有错误。我只是不知道任何命令。考虑看命令<代码>剪切<代码>提示。你也可以使用BASH <代码> MpFrase< /Cord>命令(<代码>帮助MpFrase< /代码>)直接读取数据。我指的是只有一行的数组,即(1 2 4 6 3 5 7)。我只是对字符感兴趣,
=+
+=
是不等价的。此外,bash中的赋值运算符周围没有空格。另外,请研究
man bash
或类似的资源,了解括号的含义。你不能只是随机键入字符,然后期望shell猜出你想要的内容。谢谢你的精彩答案-非常感谢非常详细,非常有用。
cut -c1,2 "$ScriptName" | mapfile Starters