[英]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"
${line:0:2}"
的解释,请参阅删除字符串的一部分(BashFAQ/100(我如何在 bash 中进行字符串操作?)) (特别是关于“范围表示法”的部分)。mapfile
bash 内置命令与cut
结合使用使其变得简单:
cut -c1,2 "$ScriptName" | mapfile Starters
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.