繁体   English   中英

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

[英]How do I add the first 2 letters of every line in a file to a list using bash?

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

我该怎么做?

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

array=() #Empty array

使用此指南: https : //opensource.com/article/18/5/you-dont-know-bash-intro-bash-arrays

我正在使用 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")

此外,如果您对字母而不是字符感兴趣,您可以使用 sed 从每一行中删除非字母,然后使用上面显示的解决方案。

sed 's/[^[:alpha:]]//g' "$ScriptName" | cut -c1,2

试试这个Shellcheck -clean(除了缺少ScriptName初始化)纯 Bash 代码:

Starters=()
while IFS= read -r line || [[ -n $line ]]; do
    Starters+=( "${line:0:2}" )
done < "$ScriptName"

mapfile bash 内置命令与cut结合使用使其变得简单:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM